I may have to revert back to that. I was using but decided to go with using Conditions this way http://www.gamesas.com/topic/1354316-conditions-in-papyrus because it cut down on potential problems with iterative events that pings scripts even with the ESP deactivated: http://www.gamesas.com/topic/1348833-old-versions-of-mods-conflicting-with-newer-ones. So I was trying to cut down on those types of Events. And I do have a Console uninstall procedure for the mod (setpqv kueasq uninstallNow True) already. I can unregister the Sleep Events there.
However, I can imagine that IsPCSleeping () will definitely cause bugs when used as a conditions.
Perhaps http://www.creationkit.com/GetSleepState_-_Actor if you're doing it with Papyrus. Also, if using an alias, RegisterForSleep() should automatically unregister.
Depending of what you want to do, you could maybe, in a completely different way, use Stats :
int HoursSlept; do onceHoursSlept = QueryStat("Hours Slept"); thenif ( QueryStat("Hours Slept") > HoursSlept ) Notification("Player has slept, not waited.")endif