Figuring out what is going on when you get a 909 error while trying to install your application may take quite some time (trust me). Here are some things to check:
If this is a developer phone, make sure you have activated it on the Sprint Developer Site. When you type in the ESN for activation (this is on the back of the phone behind the battery) make sure the letters are the correct case (usually upper case); typing in the wrong case letters will not activate the phone. Also there will be no notification sent when the phone is activated but usually it's the same day.
If the phone is not developer enabled and you have an application with a developer certificate (not a Verisign certificate) then you will also get this error. This can be eliminated by removing the certificate and Midlet-Permissions from the jad altogether.
Also on some phones (Sanyo mainly) this error can come up if the manifest file and the jad file have their Midlet-Permissions mismatching. According to the Manifest file format, the lines are supposed to wrap at 72 characters and the next line will insert a space and continue the previous line. The jad file will end up with one long line for the Midlet-Permissions while the Manifest have a bunch of lines. This can cause some phones to give a 909 error. To correct it you need to actually go back into the Manifest file in the jar and take out the line breaks/spaces so that Midlet-Permissions is exactly the same as the jad file. After you do this you need to make sure you update the jad with the correct jar size. Unfortunately there is no way to get the jad file to do multiple lines for a property so you will likely need a post processing step in your build process to unjar, correct the manifest, rejar then rewrite the jad.
On a related note, you will get a 910 error if you have no certificate in the jad but have Midlet-Permissions.
Also Make sure that the phone hasn't cached the jad/jar otherwise it will not download the new version of the program. You can do this by adding a ?(some letter) to the end of the url to grab the jad from on the phone.