Not related to VS, but in Eclipse I remember being able to specify the core count and it would fire off a gcc process for as many cores as you specified. The linking process still has to be done on one core (until the linker actually works multithreaded).
It actually felt a lot faster (maybe 2x as fast??) with just hyper-threading. Again; I'd guess that the drives were to blame;
Never thought of splitting each process's file (source, temp, build, intermediate) onto different hard drives; but if that's the way you like it you'd actually be better creating a RAM disk (maybe 128-256mb) and use that for the intermediate files. Obviously you could keep your source files on a real disk (if you wanted); But I'd be happy leaving everything in ram and just committing back to SVN every half hour or so or making a copy out to the real disk.
The ram disk would be perfect for the temp, intermediate and build files. You can always copy the build files off the ram disk once you're happy.
The ram disk I use is the Microsoft Windows 2000 one; Its not "officially" supported but it works fine on XP and has been running without issues for the past year. It's a little annoying setting the sizes of the drive and restarting and what not but once its up and running you pretty much just treat it like a disk.