We also had problems with XP. It required 2 policy/registry changes and the "Port Fast" cisco change as mentioned above.
Running Logon Scripts Asynchronously
If you are familiar with logon scripts, then you may have experience in dealing with the problems caused when the shell portion of Windows 2000 starts before the logon script completes. This is usually a function more of the design of the logon script than a specific problem with Windows 2000. You can use the Registry to be sure that Windows 2000 does not start the user interface portion of the operating system until the logon script completes. To set this behavior, change the value of this entry to 1.
Root Key: HKEY_CURRENT_USER
Key: Software\Microsoft\Windows\CurrentVersion\Policies\System
Entry: RunLogonScriptSync
Data Type: REG_DWORD
The other was what you mentioned above. After all three were in place XP performed as expected. If you are setting these via policy then you must confirm that the policy is received by the computer and is active.