This is a short idea… adware and spyware authors rely on connecting to some of Windows’ (or Internet Explorer’s) services through the Windows Registry. Generally speaking, there’s a DLL somewhere, which is pointed to by a GUID in the registry.
It’s possible to know, from the DLL, which interfaces the classes inside implement and implement their interfaces yourself. Then, by changing the pointing GUID in the registry to a new DLL, which implements the same interfaces, Windows will load your stub DLL (which does nothing, for example) and this will disable the malicious software.
I admit that I didn’t look into it in enough detail to make sure it works, and right now I don’t feel like infesting my computer with crapware (nor am I going to buy virtual PC software) so I’m just wondering if it’s a good idea.