Regarding making backgrounds and themes: Backgrounds can be made in any image manipulation program so long as they're the full size of the screen of the DAP you're making it for. As for themes, there isn't a program specifically made to make the process easier, however if you're willing to learn the various tags used to display all the bits of information you might like to display on your WPS, you can make a .wps file in any text editing application, and use your image manipulation program to make the various graphics you might use to display certain information (such as shuffle on/off, repeat mode, play mode, battery level, etc.) If you use a simulator to test the theme once you've made it (or even as you're making it), you can pass it the "--debugwps" option and it will display all sorts of information about the WPS when its loaded, including why it doesn't load if it doesn't.
I believe there was a Google Summer of Code project for an application for making WPS themes easier to make, though I don't know if it ever got finished or what the status on it is...