Well... not really.
A virtual machine is just that. It's a virtual machine. It's a computer that doesn't exist. That is, it is a software emulation of an entirely separate hardware computer. So I can have an x86 virtual machine on my Sparc workstation. It can sometimes be used to give a process fake root permissions. Well, I guess they are real root permissions, but on a non-existent machine. However, a user on a (real) computer can only give the virtual machine access to hardware that the user itself has access to. So it's not a silver bullet for solving hardware locking or IO scheduling problems.
They are mostly being used for very high-security or high-availability applications. In other words, if I run a server, and I know that apache crashes more often than everything else because it's attacked more often, I run it in a virtual machine. Then, even if malware/a cracker manages to bring down the entire machine, all they take down is a virtual machine that I can just restart. They are also used when you need to run multiple operating systems simultaneously, usually when someone gets an itch for a Windows-only game.