With modern IDEs there’s a lot of graphics and disk IO going on, neither of which is performed well by VMs. So – if your VM responds fast enough for the developers to use, then I’d say there’s no reason why not. If it doesn’t you either need to get a faster machines for them or go back to documenting how to setup the build environment.
the other factor against VMs is that if you change the environment, you have to do it for all VMs, and document the changes anyway. If you’re telling everyone how to set up their system, you might as well let them set their own system up on the base metal.
Incidentally, we do have VMsa for this – but they tend to be for old versions of the product, so we can still build it without having to install the old service packs, sdks and compilers. Its ok, but I find installing everything locally and switching between them (using junction to point to the build directories) is easier.
Now IIRC VMware has a virtualisation project called thinApp that transparently puts a OS environment onto your local box, so you can have several conflicting applications running side-by-side. I’ve not used it, but did look into it as something that might be better than whole guest VMs running in their own windows.