I thought VM snapshotting facilities/copy-on-write made it almost trivial to start with a fresh virgin one every time. With enough RAM on the VM host the changes from one session wouldn't even need to be written to a physical disk.
We never write changes to disk, the code is trivial really. And it always launches from a locked snapshot.
What we are always trying to optimize is the time to the user screen. That is really the expensive part, once the disk reads happen we want a working session on the users screen as quick as we can get it. Or that is the plan anyway. :)