Virtualization should not be at the hardware level - that's just retarded and another unnecessary product.
However there are three facts that get in the way of doing the right thing:
(1) Does it run Windows?
(2) We've got Intel and AMD making PC virtualization acceptably fast nowadays, so it makes sense to just use that.
(3) Isolation between processes is not very strong [not sure about virtualenv] but between machines is a great deal stronger because people have a lot more experience protecting networked machines from each other.
... and backed by hardware!
2. It's acceptable until you whack several kernels and OS' on a machine, all running lots of processes at which point everything suffers. Cache locality goes AWOL, cache utilisation is shared, bus traffic goes up, so does latency and performance suddenly plummets.
3. It depends on the environment. Virtualenv just provides a consistent python software environment which can be isolated from everything else on the machine. As for other things: Look at FreeBSD's jails - that's as far as it should go. Linux has ulimit and decent security. Windows has NT which is actually damn good and provides very good process isolation with respect to memory, CPU and IO no less.
If we needed virtualization, we wouldn't have processes.
Anyway, you can't compare "virtualenv" which seems to be some sort of Python interpreter hack, with full virtualization. They are completely different things, with completely different use cases.