X Windows is just a base: it is like MS Windows SDK with just lines and events. There is a whole variety of stuff that lives on top of it.
0) Athena - first X Windows GUI. Painful to use and has some strange concepts. Some everyday tools use it (xterm, editres).
1) XView - Windows 2.x/Apple Mac looking interface. No 3D stuff, everything is 2D. Interface is in C and very simple to use. Not many people use this nowadays.
2) Motif - This uses a container type technology (which is the new thing in MS Visual Studio 2005). Their notebook (what MS Windows calls Property Pages) is really strange. This uses a C interface. This is falling in popularity.
3) QT - event handling takes a bit of getting used to but once you've overcome that, this is quite slick. Look up the trolltech website. Same interface for both X and MS windows.
4) FLTK - Fast Light Tool Kit. nice simple interface for knocking up stuff quickly. Doesn't have simple stuff like status bars but has complex stuff like tree controls (called browser). Again, same interface for both X & MS.
5) WxWindows - more complex than FLTK, similar to MFC but not quite. Again, same interface for both X & MS.
6) GTK - Gnome toolkit. Don't have any experience of this one.
The main problem that most people have is in the creation of simple dialogs. With All Points Addressable (APA), which is what MS uses, you create a dialog, draw a button where you want it and fill in the details. The problem is special tools are required to align buttons. Also, if the text grows, the button has to be manually resized unless the program does it for you. This often happens with foreign language versions so every program has its own copy of the dialog and when you do a minor change, all language versions have to be modified and rebuilt.
With containers, this rebuild/alignment is not necessary. Buttons are created as children of say a row. They will automatically be aligned and the dialog will grow according to the size of the text. Most of the container interfaces allow the containers to be anchored to specific areas the dialog so when the dialog is stretched, the child widgets behave in a particular way.
There is also the halfway house which FLTK uses. It allows both techniques to be used.