Virtualisation does not however solve all Compatibility issues and can in itself create some issues.
Applications within a Virtual Environment are isolated from applications that are outside of that environment.
Imagine a scenario where you have a non Vista compliant application that communicates with a Vista complaint application using some IPC mechanism. Using the suggested solution of virtualising the (non Vista compliant) application would result in the application being unable to communicate with the other application which means it effectively does not work.
To me virtualisation appears to be a temporary solution, a stepping stone if you like, while you address the real issues in your non compliant applications.
It is not too difficult to see why virtualisation can be considered a Kludge.