Since we updated to Windows 7 at work, I can never properly eject my portable hard drive without rebooting the computer and yanking the cord at the BIOS screen. (Ever a flair for the dramatic.)
I've Googled after the issue, and going back to the early days of 7 (and possibly Vista as well) it seems the OS does a couple other things to hook into portable drives that, best I can tell, means you're not ejecting your drive cleanly without rebooting the computer or at least logging out of Windows first.
Of course the drive is set, in Device Manager, to optimize for quick removal as opposed to performance. In Windows XP and prior, this meant that you didn't need to ask to eject, as long as nothing was running. Recycle Bin isn't using the drive, either. Nor ReadyBoost, nor Indexing. (Indexing doesn't even show up.) The computer isn't running any spyware/oversight software or anything like that, so far as I know (nor am I asking for help around it—I know this forum's policy on that well, and I'm sure it isn't the issue).
If I open CCleaner, then exit the PortableApps.com Platform, then run CCleaner, Windows will then let me safely remove the drive. So I suspect it's something to do with caching.
Anyway, it would be really cool if the Eject function would do more than request a safe removal three times and then quit. I'd like to see it check for hooks in the drive, and, if they exist, allow the user to kill them, which should allow for safe removal straight away. One extreme method that should work is to uninstall the driver for the drive in question. This might (will?) require admin privileges, and will force the computer to re-acquire the drivers every time. That might be pushing it. Surely there's some kind of middle ground, though.