Well, for a GUI to be good, you have to start out as stated before. It needs to be simple enough that you can toss someone in front of it, and they can figure it out. The difficult part is finding out how to make it also attractive to those who like the deeper technical details.
Lets take, for example, Paint. Paint is a good GUI, because it shows you all the things most ordinary people would use when going into Paint. The basic colors, brushes, buckets, and an eraser, as well as the Main Menu which you can go to and just go "NEW".
However, the real trick is when you get an expert in paint. Who knows how to get particular shadings down, the line thickness, the zoom shortcuts, the different tools, Selecting different parts, knowing keyboard shortcuts for making quick undos and redos, being able to quickly grab different shapes and fill them or empty them as necessary.
A good GUI needs to be absolutely simple in its initial form. But it also needs to have a much deeper interface hidden within, that a basic user won't see much of or need, while the advanced user can find and know what to do with.