Usually a problem with ACPI - maybe the mobo, maybe the power supply, maybe the ACPI driver in Windows, maybe a BIOS issue. It's also possible it's a software program hanging on shutdown. A virus is possible but unlikely.
Try some experiments to nail it down:
- Do you have another PSU you can temporarily connect just to see if it does the same thing? No need to swap out the PSU, just temporarily swap the connections.
- Try booting into safe mode and then shut down Windows and see if it does a proper shutdown. If it does, then it's likely an ACPI driver issue.
- If you think it maybe a software or driver issue you can use System Restore to go back to a restore point before the problem started happening (for technical reasons too complicated to discuss here, go back AT LEAST ONE WEEK before the problem started).
Hope this helps...