This comes up on /. every so often, and I'm summarizing here the advice from a few people who (to me at least) sounded knowledgeable about the topic last time it came up.
- Use a strongly contrasting color scheme - this is obvious, black on white is easier to read than orange on red.
- Match the background color to the environment - staring at a bright monitor in a dark room is like staring straight at a light bulb - and the reverse can be true too (you get a halo around the monitor burning into your retina). Green on black is probably a brilliant color scheme if you do all your coding in a basement only lit by the blinkenlights of a router, but in a well lit office may not be as good for your eyes.
- Limit color edges. Okay, this is where I'm going to paraphrase other people really badly, but here goes. Your eye has separate RGB color cones, and effectively has to match a set of separate red, green, and blue images together. For some people, you can start to see optical effects when there is a strong contract change in different channels - your eye doesn't line up the images correctly, causing a blurry shadow around objects. This is not necessarily visually all the pronounced, but causes eye strain.
Based on this advice I've switched to blue on light beige (#0000C0 on #FFFFC0). It has a strong contrast in two channels, no change in the third, and suits my office (reasonably bright, but lit with non-natural light). So far, this is working well for me.