I've had a similar issue with XP. Now I'm no programmer, but from what I understood (for me) it went like this: the Windows WLan configuration service timed out for whatever reason (maybe the router didn't respond, or whatever). Windows would still boot, but it would take ages, 5 minutes, 10 minutes, etc.
What I did back then is write a little script that deactivates the service and another one to reactivate it, so that I could deactivate it when shutting down and reactivate it when starting up - that solved it.
I've had multiple services timing out as well, however, it was only the fault of 1 specific service that hindered the other service's proper execution.
If you know which services are causing the problem, maybe you could do something similar? Integrate the script in a way that it automatically executes when a user shuts down and disables the service and then when windows has booted it re-enables the service.