I don't think this is possible because of the way Windows shuts down. Windows doesn't always peacefully ask its running programs if they're ready to shut down yet.
I've tried using scripts in the logoff Group Policy to do save-states on running VMs and I still have windows forcefully shut down the guests before the logooff save-state script gets a chance to run.
Good ways to make sure guests don't get killed during a Windows shutdown on usual hosts, like your laptop you carry with you everywhere, etc. are:
Get into the habit of shutting down all programs before shutting down the host manually.
Remove all timed shutdowns,
such as fully automatic Windows Automatic Updates - make it download & notify instead (Edit: I don't do this anymore, I use a script - see down lower).
For hosts that run mission-critical guests, like the office server:
Remove the Shutdown and Restart selections from the Start menu, so a shutdown has to be run from shutdown.exe instead, and provide scripts that check if the guests are running before running shutdown.exe.
Run guests from a service, using this setup:
viewtopic.php?f=6&t=4762 No log-in required, but all guests have to be accessed via remote-in software, either Virtualbox's RDP or something in-guest, like MSRDP, LogMeIn, UltraVNC, etc. in the guest.