Is there anything interesting in the Applications -> Utilities -> Console logs that relates to when you get the timeout error?
Have you tried creating a new Applications -> System Preferences -> Users & Groups -> [+] and create a new account? Does the new account have any problems starting a terminal session?
The fact that it happens for BOTH Terminal.app and iTerm.app indicates it is something common to both, so that kind-of eliminates the Library/Preferences/*.plist for each of those apps.
I think getting past login is required before any attempt to use the shell initialization files can happen, unless you added something to your shell initialization files that tries to login again (eg. exec login; unlikely I know, but I felt I had to ask).
Your account information used to authenticate the login session, as well as provide the shell to launch, UID and GID, home directory, etc... is common to both, and comes from the Mac OS X equivalent to the /etc/passwd file, only Apple uses something different for user accounts.
I'm guessng that xterm maybe used a less complex way to obtain the login information, and that is why it succeeded (really just a guess).