Is the GUI supposed to go on another device which talks to or controls the Arduino? Then you need to write the app in that environment. Processing or Python on the PC, app-developer-whatever for the tablet or phone.
If the GUI is supposed to be on the Arduino itself then it is highly dependent on the hardware you use. Some people want a flexible menu system that works on a 2-line LCD with only one or two buttons. Some people want to plug in a full size keyboard to type stuff. With the limited memory, you cannot put a program that flexible onto the Arduino.