I wrote this simple AppleScript app a while back. Use it as a work around for USB drives that get force ejected at sleep. SafeSleeper will properly eject all USB drives and put the computer to sleep. It will detect and warn you if a network connection like File Sharing is preventing sleep and when you wake the machine, all your USB drives will remount themselves. SafeSleeper will save you from possibly corrupting data and you'll never see that annoying message again when you wake your system.
Disable Auto Sleep in System Preferences.
Place SafeSleeper in you Applications folder and add it to your Dock for easy access.
Double click to sleep.