As mke points out VMware's vCenter Lab Manager is the benchmark but it isn't cheap (~$2k per CPU on the ESX Hosts in the cluster that runs it) and you need to have vSphere cluster capacity for the VM's too, again not cheap if you don't already have it in your budget. If you have an environment where provisioning any significant number of developer VM's is a regular task though it is worth the cost IMO.
For an entry level solution you can prepare templates\clones with all of the components pre-installed, nicely patched and up to date too. Deploying from such a template will typically be an order of magnitude faster (if not more) and more reliable than scripting a full install followed by app installations, especially of the type you require. In a VMware vCenter environment this is pretty easy as vCenter handles all of the customization\sysprep parts for you but in any virtual environment you should be able to sysprep a baseline VM and save a copy. Provisioning your new VM is then simply a case of making a copy and importing the new VM instance, both are trivial to do for both VMware Infrastructure VM's (Using the PowerCLI) and Hyper-V VM's (using the PowerShell Management Library for Hyper-V) using Powershell but may be harder for other Hypervisors. One possible fly in the ointment is the way SQL Server's identity is handled - you may need to script some additional steps to clean up the cloned SQL instance as outlined in this SQLmag article.
As far as developers breaking test systems is concerned, that should be expected and ideally it should be something that they have no worries about. You want them to be able to break lab systems as much as they need to after all. VM Snapshots are one way to deal with this especially if you have an environment where you can give the Developers the rights to directly manage snapshots of their VM's.