I found this from onegeek.com, what do you think...
Windows XP Userinit Fix
When you log into windows XP, you are immediately logged out. The desktop may show right before logging you out and back to the welcome screen.
You are possibly missing a reference to the userinit.exe program in the registry. (I beleive) The userinit program is the first program to start, which calls other startup programs for your windows xp account.
This could have been removed by spyware removal programs (indirectly) or accidently deleting the value in autoruns/startupeditor referencing userinit.exe.
I created a program to run a *.reg file. There are a couple of steps to make this fix/hack work.
Disclaimer: You are responsible for your actions.
1. You will need to connect the harddrive of the bad computer to a working xp machine. This can be done as a slave drive or a ide->usb adapter. We now have access to the bad computer's filesystem.
2. We need our program to run when the computer starts. To do this, we will temporarily replace the printer spool service (which most likely is enabled by default) with our program. The printer spool service is called spoolsv.exe and located in the c:\[windowsdir]\system32\spoolsv.exe of the BAD Computer. Find this file and rename it to spoolsv.exe.bak.
3. Download spoolsv.exe (the fix) to c:\[windows dir]\system32\spoolsv.exe. Note: this will not overwrite any file, because in step 2, we made a backup of the original spooler service program.
4. My program has a hardcoded value of "C:\windows\regedit.exe". If your windows directory in the Bad computer is located anywhere else, you must copy the regedit.exe file from c:\[windows dir]\ to "C:\windows\".
5. Download the userinitfix.reg to c:\ in your Bad computer. You NEED to modify this file to reference the correct path of your userinit.exe file.
You're finished. Now, reconnect the bad drive to the original computer. When you log in, you will see a blank window and a prompt confirming the addition of the registry information in userinitfix.reg. Simply answer Yes. Log out and back in, and your desktop should appear.
If your desktop appears, you will need to browse to c:\[windowsdir]\system32\ to restore the original spoolsv.exe file. Delete my program spoolsv.exe. Rename spoolsv.exe.bak to spoolsv.exe. Reboot the computer and you should have a print spooler service.