I also ran into this problem and found no solution. I will try to describe everything in detail.
Host: Win 7 x64 (I usually work on it via RDP)
Guest VM's: Win XP
VM's scenario:
-all machines started
-important: NO user logged on
-no screen saver activated
-power settings: turn off monitor -> never; Turn off HDD -> never
-important: all VM windows are minimized on host and untouched for about 15 min (i'll explain below why)
Observation: normally, ACPI shutdown works very well on the VM's but under certain conditions (described below) they don't!
To replicate it's important not to "touch" the machines or bring their windows in foreground (hover mouse over them or push keys while they're in foreground, etc). Just let the VM's get idle. I left them at the beginning for about 30 minutes but it also works with shorter times (10-15 minutes) - with less I haven't tried.
On VM's no user is logged on.
If the VM's are not operated for some time (I didn't count how much) it shows the well known Windows XP logo which moves around (on black background).
The problem: When the ACPI shutdown is issued, the following happens: the Win XP hosts do not poweroff. They still answer to ping. It is like something prevents them to poweroff.
What I've observed:
1. When I login with RDP on the VM I can very shortly see the machine switching from the wellknown screensaver windows logo and afterwards the message window appears "Windows is shutting down" and in about 1-2 seconds the mashine is gracefully powered off.
or
2. On the host: when i maximize the VM window and hover the mouse over it, the same happens as described at point 1.
The issue is: WHY DO I HAVE TO MOVE THE MOUSE OVER THE (IDLE) VM's SCREEN (virtual screen/RDP screen) TO GET THE MACHINE ACPI SHUT DOWN?
(please do not consider the capital letters as shouting, it's just for someone who doesn't read the whole message, or just browses trough it to see the essence.

)
What I've also tried:
1. Scheduled ACPI shutdown of the VM's from the host (vboxamange controlvm vmname acpipowerbutton)-> same result as described before.
2. ACPI shutdown from the Virtualbox Interface -> same result as described before.
3. Scheduled shutdown from within the VM (shutdown -s -f -t 0) -> same result as described before
4. I have also tried remote shutdown via the sysinternals tool: psexec shutdown -s -f -t 0 (with the admin credentials) -> same result as described before