I've had this problem all along since early 2010, but I think it's more serious than just updating drivers:
I have a 27" iMac and my wife has a 21" iMac. This happens to both of us.
We both use wireless keyboard, wireless mouse and trackpad. When this problem occurs, none of the devices can wakeup the iMac. I have to push the power button to see the screen and even then, none of the devices can sync up with the iMac. This only happens when the iMac is put to sleep (Cmd, Option, Eject) for a long time, such as overnight.
So I attached a wired USB mouse at that state to see if the system was responsive. The time was correct, so it wasn't really locked up. The USB mouse got my cursor back, yet when I tried to open the Bluetooth connection, but it was just hanging. I decided to "Restart" the Mac. The screen went white and the Spinning Wheel (not the spinning beach ball) displayed. The system simply would not shut down, unless if I held the power down and rebooted the Mac.
This tells me a few things. 1) For any Bluetooth or wireless device to be able to turn on the Mac and bring it out of sleep, the radio for the device needs to be on and in constant communication with the devices, even if the system is in sleep. 2) The nature of Bluetooth is that it created a network connection to each device which is different than WiFi. That's why you can only use one wireless phone with a bluetooth headset, even though if you pair multiple phones with it.
So since the "network" connection is disconnected from all available Bluetooth devices, this tells me that the radio inside the iMac is turning off and can't see the devices (that's why neither of them can bring it out of sleep), and when the power is restored by pushing the button, it simply does not come back up again (locks up) because the driver is still running and it thinks the radio is still on, but the chipset is shut down. A reboot resets the registers in the radio and reconnects the devices based on their MAC address.
This is either a flaw in the chipset, an issue with the driver or a combination. My guess goes toward the chipset issue which unfortunately is difficult or impossible to fix without changing the radio module. These type of chips unfortunately are not programmable and they simply need to be replaced. I'll do more testing by trying to kill different process while I have the terminal window open next time.