Windows has never really handled hibernation very well, and Windows XP is, in my view, even more prone to problems.
The OS never really shuts down as there are too many background services that continue to run and these can interrupt the hibernation. The hibernation process stores everything the OS was doing onto disk, and this is then supposed to be reinstated when the OS is awakened, but if anything has changed during the meantime, the OS gets confused. Also, many people complain that when they wake up their computer it has; lost network access, some program or other won't open, etc, and they are forced to reboot to get the OS working properly.
Whilst this doesn't help you with your problem, have you ever thought about simply sending the OS into a screen saver, and then just turning the monitor off?
It works for me. I configure the screen saver not to prompt for a password, (saves me from logging on at the Welcome Screen again), and turned off all power saving and hibernate options in Display Properties, (or Power Options in the Control Panel), and it will sit there quite happily until I return, turn on the monitor, and give the old dear a little nudge with the mouse.
Regarding the logging off of another user before hibernating, have you got Fast User Switching enabled? I don't know for sure, but if you have I would give odds that hibernating with that enabled may give you problems.
I am running XP home with SP2 and recently I have encountered some problems hibernating my desktop. When I go to "Turn Off Computer..." and press and hold SHIFT in order to hibernate my machine begins to hibernate. Once it is complete it automatically wakes itself from hibernation. So now, in order to get it to hibernate and stay there I have to log off first then initiate hibernation. That makes hibernation take just as long to start up as completely shutting it down.
I have also noticed that when I tell my computer to shut down now it says I have a user connected and prompts me by asking me if I am sure I want to shut down unless I have already logged myself off.
How can I get my operating system to just hibernate without having to log off first as it once did?
Any advice would be appreciated.