When I saw this in my env there were 2 main culprits
1) a login script in power shell. Took a few seconds to kick off and load the profile and there was unintended timeout for a command
2 ) using a gpo that forced synchronous processing of all gpos before the desktop was available