I understand the need for multiple Enterprise and JAS servers, but why do you have multiple Deployment Servers? Is each company geographically separated, and has their own hardware? Or is everything under your central control?
To answer your questions, you could use SNAPSHOT to switch between Development environments. Configuring VMs or using Virtual PC would work too, though they would take up a lot more space than using SNAPSHOT.
SNAPSHOT Pro: uses less disk space and memory than configuring a virtual machine
SNAPSHOT Con: notoriously easy to get confused and mess up the configuration; only one instance can be running at one time
Virtual Machine Pro: each instance is completely separate; you could run multiple sessions and be working on more than one at a time
Virtual Machine Con: need more memory to run a VM; need more disk space to hold a full VM instance; extra licensing cost of OS
If you have the servers to run all the different VMs, that's great. Another thing you could do, since you've brough up Virtual PC, is to have each developer host the instances on their own PCs, and run them with Virtual PC or VMWare Player. The answer to that depends on how much control you want over each VM, and whether you want to allow the developers to mess with the VM's virtual hardware configuration.
I have done it both ways. The quickest way was for me to create the VMs in the free VMWare Server, create a base VM, clone the VM as needed, change the PC name and SID info, and give the developer a copy of the VM files along with VMWare Player (also free) to run whereever they needed to.