Dictation usually works by having a language model (a mapping between phonemes to strings). Unfortunately, the language model for programming simply isn't a good match to English, so your recognition error rate would be quite high.
Spacing and navigation are the least of your worries; you could build a set of macros to take advantage of Visual Studio's knowledge of your code (goto method, etc.)
IM and emails would be well handled by DNS (or Windows Speech Recognition, for that matter).