I've seen this happen periodically at work; it was specifically related to a server's shared drive being mounted in the Finder. When you'd wake the computer from sleep, it would take the network a few seconds to kick in, during which time some app (Eudora was, I think, the biggest culprit) would try to access one of the networked volumes.
But instead of just a pause until the network kicked in (which is what you'd expect), the app would essentially send the computer into a "stuck waiting for a drive" state that would basically beachball the entire system (though initially it was irregular). There was no way I'm aware of to recover from this other than a hard restart--even terminal Kill commands wouldn't kill the offending app(s).
Now, this may or may not have ANYTHING to do with your situation, but if you, say, have a USB thumb drive or maybe an external hard drive connected that went to sleep when you put the computer to sleep, it might cause a symptom like that.
If so, you have two options: Hard restart, like you did, or you can try yanking the external. When it's not a network volume, in my experience that seems to recover the system. Since you'll be doing a hard restart anyway, it's worth a shot.
If you have nothing external mounted, maybe just bad luck?