Sounds like desktop settings are corrupt in the /home directory. Have you tried to create a new user and see if you can log in with it. If you can log into graphical as root you can probably go through administrative tasks GUI or from command line as root with command:
Jimbob would be the name of the new user, you can change it if you don't like it, kinda hard to type. You will be prompted to enter a password for the new user, accept default recommendations, log out and log in as the new user. If the new user cannot log in also, you may need to remove and reinstall your display manager.