If you do what the post above suggests you will not solve your problem. You will not have themess and you will not have learned anything. All too often that is the type of response you get from here.
Here's the answer to your problem.
I am assuming you can get into a character based log in, as your post above eludes to that.
In the /usr/share/gdm/themes folder you will find your themes (the log in page COMPONENTS organized in folders). The one that is currently being used is represented by a symbolic link with the name of Default. You should remove that link and create a new symbolic link to one of those gdm themes that you know work.
http://www.kde-look.org/content/show.php?content=12544
This link points you to a sort of generic gdm theme that you can install manually. You need only extract the contents to a folder in the above listed location and then create a Default symbolic link to it. That will allow you to log in and then you can use your theme manager to put one that you know works in its place.
Your problem is an important one as it points out the utter inconsistency in Linux and how it can with as simple as a change to some xml code temporarily disables your workstation.
One thing linux needs is much better organization and cooperation between distros. Moving things to different directories even if some distro creators think it makes more sense, if it doesn't solve a real (rather than perceived) problem should not be implemented. It is a matter of priorities. What's more important? Do you want a distro that changes things to perceived problems or do you want a distro that creates fixes to real problems and resolves issues that lead to more universal configurations common amongst distros?
Think of it this way. If they weren't supposedly working for that concept now every distro would have programs that don't run executables from other distros. Since we know the goal is to create consistency there--having your program work on every distro--then they need to be working on distros where the underpinnings are consistent and common. It's the only realistic thing that we the users can expect from this.
So, your problem represents a big issue in Linux one which is attacked by every zealot in the linux community. Unfortuantely that zealotry is harming linux today more than it is driving a product into reality.