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
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.