BootVis has nothing at all to do with shut down. It simply reorders the services and programs that load when you boot for maximum load time efficiency.
Are you on a network? If so, the network protocols do take a little time to unload.
If you want to accurately identify what's holding up the shutdown, here are two methods from which to choose:
1) The better but more time consuming is a selective startup. Go to msconfig and disable everything then boot and shutdown. If the shutdown process is faster, start adding items back in msconfig one at a time until the shutdown problem recurs - then you'll have identified the offending service or program.
2) Quicker but potentially less effective - go to task manager and kill the running aps / services one by one before shutting down and see if that reveals the culprit. Only problem with this method is that if it is a service it may be grouped in with others in an svchost. In that case, you can download and use Process Explorer to identify dependencies and affiliated processes.
The tweak Dealer mentions above this post may indeed be helpful depending on what's holding up the boat, but you should be aware of one potential problem: if XP shuts down without sending proper notification to certain services, there is a possibility of creating corrupted data stores. Adimittedly this is not a likely occurance and I'm not suggesting it isn't a potenntially valid solution, but the possibility for trouble does exist.