"Why not give each user that needs protecting from other local users a virtual machine instead?"
Because it's a massive waste of memory, can cause a lot of IO performance problems, and doesn't really solve the problem, just gives up on OS security and pushes the problem one step up the stack.