If you set the DEVMGR_SHOW_NONPRESENT_DEVICES environment variable, Device Manager will show you the "ghosts" of past devices that are no longer connected to your system (or in the case of USB devices, were perhaps attached to a different USB jack) if you enable Show Hidden Devices. From there, you can right-click and uninstall all these non-present devices. (Don't worry, the OS will detect and reinstall the drivers automatically when devices are reconnected.)
I check non-present devices regularly, and I'm always amazed at the amount of crap left in the registry. In addition to having every three devices (USB Mass Storage Device, Disk Drive, and Storage Volume), for every flash drive ever plugged into the machine, I seem to have practically every permutation of USB device and USB jack imaginable. Even upgrading firmware seems to leave a ghost of past devices in the registry.
Often, I've installed a network card to have it described in Network Connections as "Wireless Network Connection 3", with no sign of any previous entries. Well, the previous entries are still in the registry, but they're just non-present and hanging around in case you insert that old card again so that it can be detected a little quicker.
Frankly, it really amazes me that no registry cleaner will do this for me automatically. I do it by hand in Device Manager, but with the number of ghost devices the process is extremely tedious.
This would be a fantastic feature for CCleaner!