This is more a workaround than a solution, since a solution isn't possible until we know what the problem is (hence the troubleshooting questions I've asked above).
Clearly, some of your settings are corrupted. Try doing this from a console (Ctrl+Alt+F1):
# Get rid of any possible dotfiles that might cause trouble. You
# might not have all of these, and you might need to modify this
# list a bit. The files/directories will go to the newly-created
# configuration_backup directory so you can restore them if
mv .config .dbus .gconf* .gnome* .gtk* .local .metacity configuration_backup
After this, you should be able to log in graphically. However, these steps will destroy many of your settings (unless you restore everything from
configuration_backup. You'll have to redo them. If you can provide more details about your situation, there might be a solution that won't destroy your settings. Or, it might be easier to just accept this workaround and simply redo your settings.
If you later decide you want to restore your settings, look in the backup directory (
~/configuration_backup) and find the name of the file or directory you want to restore. If you can't see what you want, use
ls -A (command line) or Ctrl+H (Nautilus) to see the hidden files. I recommend that you first backup and delete the file/folder of the same name in your home directory. Then, copy one file/folder at a time to your home directory (e.g.,
cp -a ~/configuration_backup/.config ~), logging out and back in each time to make sure your old config files don't break your system.