I’ve always found it annoying that when I shutdown windows it takes down my VirtualBox guests in an ungraceful manner. Most times this ends up causing the guest to load very slowly the next time I use it, although on one occasion a guest image was actually corrupted.
To resolve this problem, just open up a command prompt, run the following command, and restart your VM. From that point forward the VM will shut down gracefully when you execute a Windows shutdown.
C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "VM NAME" GUI/DefaultCloseAction Shutdown
Full credit for this solution goes to Kevin Nelson.