Depends to what level you're looking at. The VMs are insulated from hardware changes in such things like if you changed the 1 GBit ethernet for 10 GBit ethernet, the VM doesn't see a change in the hardware. It's still seeing the same Intel E100 card (or VMXnet3, or whatever the virtualized card you've presented is), only that it is now magically faster. Same if you changed the video card. Your VM doesn't really know that the hardware has changed (it's still a VMware SVGA II card). Or that you've moved your virtual disk from a 5400 rpm disk to an SSD. The VM still sees it as the same hardware, just that it is now faster. (Or slower if you go the other way). CPU is one of the few things where certain parts of the CPU hardware may leak through into the VMs perception, and even some of that is erased by using EVC modes in vSphere.
I'm not sure that most people would want to try to achieve this "100% independance" of the VM. Most people want sufficent independance such that when swapping around the physical hardware, the OS inside doesn't need to reconfigure itself to deal with the new hardware. It's kinda one of the advantages of virtualization in that you can upgrade the underlying hardware for faster resources, and you have to do nothing with the VM to take advantage of the new speeds.
(This, of course, does not consider the pass-through features where the admin is intentionally piercing the virtualization layer to present actual physical hardware to the VM. Of course if that hardware changes, the VM will notice.)