If you use the Terminal, you may run into a problem where the Terminal will display a new window but will not show you a command prompt. You can enter text, but nothing registers as a command since there is no active shell. I very frequently use the Terminal, and periodically this has happened to me and can be quite frustrating.
By default, the Terminal uses the /usr/bin/login process to open a new shell, but if there is a problem with access to the login process, or with resources that the login process needs (ie, access to the settings for the active account) it may hang and prevent the Terminal from logging in. This is indicated by the word "login" instead of "bash" (or the name of another shell) being present in the Terminal window title which means the login prompt is still the active process and has not loaded the shell. If this happens, there are several things you can do.
Change the Terminal shell
The use of the login process keeps the utilized shells the same for the system as a matter of convenience, but you do not need to use this process when you open the terminal. Instead, you can tell the terminal to specify the shell used and bypass the need to look up account information. You can do this by going to the Terminal's preferences and specifying which shell to use ("bash" is default, as it is with most user accounts) by selecting a command to run instead of the login process.
Restart the computer
Sometimes a system restart is all that's needed for the login process to access information from your account. If there's a problem with access to the directory information when you initially logged in, this could pass to other processes that access this information, and a restart can sometimes clear this.
Remove the Terminal's preferences
Lastly, this can be caused by a problem with the Terminal application's preference file. As with other applications, corruption in the preference file can result in odd application behavior and not have it access resources properly. In the Terminal's case, this could be a fault not allowing it to properly load the login process. Deleting the file "com.apple.Terminal.plist" from the /username/Library/Preferences/ folder and relaunching the Terminal may help.