I recommend a dark (but not black) background, and light (but not white) text. The higher contrast is easy on the eyes, but too much contrast gives me (personally) a headache over time. I also 100% agree on your comment about using a washed out color for docs and comments.
Definitely use different (even if just slightly) different colors for User types, delegates, and value types. This makes them pop, and really helps when you're trying to understand other people's code quickly.
Also, I second the comment about making string literals stand out. I don't necessarily use horrible colors, but I have them a color separate from all of my other colors so they are very noticable.
I also like having Numbers be a separate color. Many times, numbers have some of the same issues as string literals, and having them colored separately makes them stand out for me and helps clue me into places where I should replace a numeric literal with a constant, property, etc.
I've found that it helps me to have a separate theme available where the colors are all exaggerated (bright blue instead of muted blue coloring for interfaces, for example) for refactoring. I use the same basic color scheme I normally use, but with "brighter" colors for each of the types. (I don't like changing color schemes - my brain is kind of wired to my standard set of colors - switching defeats the purpose for me). Having brighter versions makes everything "pop" a bit more, though, so it's nice for refactoring or for trying to understand somebody else's code.