To be honest, 40 second to a minute of chugging sounds kind of like par for the course for Windows.
That said, let's start with a differential diagnosis. First try booting the machine up, and letting it sit at the login screen for several minutes before logging in. This might help us determine if the culprit is something started pre-login (system services, mainly) or post-login.
Either way, the problem could be something started from HKLM -- a machine-wide setting, or something in HKCU -- something user-specific. The easiest way to test that is to create a new user account and log in with that. You
could use the Administrator account, but it's kind of a pain to get to in XP, and it might not have a fresh default profile if you've ever used it before. Be aware that if you create a new account, the first time you log in will take a bit longer than usual since it has to create a copy of the default user profile, etc. Once you've logged in with it the first time, reboot your machine and try logging in with the new user instead of your own to see if it exhibits the same behavior.
For a more direct diagnosis, you can try using
ProcMon and
DiskMon from Sysinternals. You can use these to log and monitor file and disk access, but getting them started with the correct filters in place early enough to determine what's chewing on the HDD could be problematic. Similarly,
ProcExp or even just the standard task manager (bleh) can be set up to show I/O reads and/or writes. Of course, not all I/O ops are
disk I/O specifically, but it could at least narrow the field.
One obvious question, though, is how full is your hard drive? Assuming you have a traditional magnetic platter hard drive (as opposed to a solid-state disk), data is written to the disk from the outside "cylinders" in. As you move towards the inner cylinders, performance decreases because the linear velocity decreases. So as your disk gets full, you're utilizing the slower areas of the disk to a greater extent. Especially if data needed at startup time is located towards the inner tracks, this can noticeably slow things down at start up time.