Some musings that aren't terribly directed...
It is really hard to convince a game programmer to use a GUI lib. The nature of these libs is that as they do GUI tasks the "right way" they must become an entire framework for programming inside of. So instead of functions like:
Code:
DrawButton(BUTTON *pButton);
IsMouseOverButton(int x, int y, BUTTON pButton);
...you get framework-style functions like:
Code:
RegisterButton(BUTTON *pButton);
OnMouseOverCallback(WIDGET *pWidget, int x, int y);
As a GUI lib author, when you start making your lib do more things, the first thing you want to get control of and abstract away from the lib user is the input collection. I.e. instead of relying on the lib user to collect the input and call functions to do things like change input focus or animate mouseover states, you want to grab the input and do all that stuff yourself by default.
As a GUI lib user, it can be maddening to lose control of these things and be forced to learn new ways to fit into the framework. So more often than not, people dump the GUI lib and write their own. Game programmers, especially, who indulge their ego whims more often than say database application programmers. If they have to fit into a framework, then it might as well be their own.
I wrote the most beautiful GUI framework (an internal proprietary thing for another company), documented to the max, handholding my users, updating it in response to feedback. Bleh. All I heard was "oh, it's too complicated. I'm just going to write my own thing that is exactly the same as what you wrote, but better because I wrote it." 
-Erik