As Nothinman noted, you can build GUIs in C++ in MFC. This makes building GUIs in C++ simpler, or more difficult, depending on your perception of MFC.
I often employ MFC simply for the message mapping facilities. In other words, I'd rather have a simple OnSomeEvent(...) method than have to handle the actual message from the queue in the WndProc. I build the interfaces using VC++ 6's resource editor. It's really quite easy and I can insert ActiveX controls, etc.. Granted, it's dialog-based, but it works for most cases.
Nothinman was correct; Windows Forms is the new GUI paradigm for .NET. *All* .NET languages have access to Windows Forms, so you can build them in C# just as you can in C++ (called "managed C++" under .NET). Visual Studio .NET lacked a designer for Windows Forms when using managed C++; however, it's in Visual Studio .NET 2003. C# of course has the designer, as does VB.NET, etc..
Whether you use C# or managed C++ is entirely up to you. You can of course mix unmanaged C++ with managed C++ in the same project, or even the same translation unit. You simply oscillate between unmanaged and managed code using two pragmas: unmanaged and managed.
Hope that gives you some answers.