My windows phone 7 app has very nice background images but they are being destroyed by color banding on a 16bit color device. Is there a way I can correct this? I have tried saving in several different modes in photoshop to no avail.
The solution is to not use gradients.
There is no way round this with the colours supported by the device.
If I set the mode to 8bit and dither using the "web palette" this creates a pretty good result. This is MUCH better looking than the banded image. However I will probably end up with 2 versions of the background image. One for 16 bit and one for 24 bit and above.
You need to use dithering. Floyd-Steinberg is a good algorithm that is simple and runs fast.
You don't need to go to 8 bits per pixel as suggested by another answer, you can go directly to 16 bits per pixel. You need to know how it is split into R/G/B before you begin.
Here are some examples, first up is the original 24-bit:
Next is a 16-bit without dithering:
Finally 16-bit with Floyd-Steinberg dithering.
P.S. I did this with Paint Shop Pro, I don't know if Photoshop has anything similar. You can do it in code as well.