There are many reasons why there might be an extended wait for a shut down to occur. WinXP does a little clean-up before shutting a computer down, one of the reasons why XP is a stable OS. Other reasons include: many services running, software that is still running when shutdown command initiated, hung applications, security or other software that wants to take a system snapshot, viruses, spyware; the list just goes on and on.
First, make sure that you are running a clean, efficient machine. Clean out the junk files (CCleaner), defrag the drives (Diskeeper Lite), and clean out any malware that may be lurking in the works (Spybot S&D, Ad-Aware, Avira AntiVir, AVG Free)hint; you should not install more than one anti-virus at a time and finally, clean up the registry (RegScrubXP). Once you've done that, make sure that there aren't a lot of unnecessary applications that automatically start up when you start your computer; (start/run/msconfig, select the startup tab and uncheck those entries that are really unnecessary, or that you use only rarely, click apply and close; you will have to restart your computer for these changes to take effect). Now, you have a reasonably clean, efficient system.
It is now time to do a few registry hacks. Be exact, be careful and don't worry, after all, you are going to create a back up of the registry. Go to start/run/regedit, then hit OK. Now, go to file, then export. In the next box, name the file something like shutdwn hacks and save in a directory of your choice. This will create a file which is a copy of your registry as it currently exists, so don't forget where you saved it. Now we can work in comfort; but remember, be careful and be exact.
Find HKEY_LOCAL_MACHINE and navigate to HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control
Highlight the Control folder.
In the right pane -
Double click "WaitToKillServiceTimeout" and
Set the value to 1000.
Now find HKEY_CURRENT_USER and navigate to
HKEY_CURRENT_USER \ Control Panel \ Desktop \
Find and double click "AutoEndTasks" and
Set the value to 1
Find and double click "HungAppTimeout" and
Set the value to 1000
Find and double click "WaitToKillAppTimeout" and
Set the value to 1000
OK, we are almost through so let's take a look at one more thing. This item is probably already at the desired value, but let's make sure. Find HKEY_LOCAL_MACHINE and navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Highlight Memory Management, and in the right pane
Find and double click "ClearPageFileAtShutdown" and
Set the value to 0.
*CAUTION* This value will prevent the page file from being cleared, which takes time, but will also leave information in the page file that you might consider sensitive such as passwords and account numbers. If no one else uses your computer, this is a non-issue.
Now, close the Registry, and restart your computer to have all changes take effect. As a test, do a shutdown and see if things aren't just a little peppier.