My guess would be corrupted ~/.gnome* files or other ~/.?* ("dot files").
Try logging in as a different user (create a new user account for the purpose if necessary).
Then try the following from recovery mode or a text console:
mkdir ~/BAD && mv ~/.?* ~/BAD
... this will create a directory and, if that was successful, it will move all of the "dot files" thereto (and thus out of your home directory).
Do NOT use ~/.* ... this might cause issues (not with GNU
mv but with other systems) if it attempts to move .. (the parent of your home directory). Technically ./.?* would fail to match files named things like .a and .b --- any dot followed by a single character. As a practical matter I've never seen such a file used for any sort of configuration settings, so it's merely a theoretical issue for you to understand. Depending on your shell you could use
mv ~/.[^.] ~/.?* ~/BAD/ to be pedantically comprehensive.