It's probably a service causing the problem. You can try stopping all the services you can before shutting down and seeing if you get the delay. Then shutdown again, stopping one less service. Keep doing this until you find the service in question.
If you find a service that refuses to stop cleanly while doing this then it may well be the problem one.
There is a registry setting that determines how long Windows waits for rogue services, so the other approach is to change the registry setting to a much shorter number.
At one point during NT4's life the value was 60 seconds, I think it got increase to five minutes when Exchange appeared. The increase was just a slimy hack on MS's part because Exchange's service could appear to be rogue for several minutes at shutdown...
Can't remember the registry key I'm afraid.
_________________________
Remind me to change my signature to something more interesting someday