Personally, I find GUIDE good enough for quick simple GUIs and to learn how to create GUIs, but now I generally prefer to create the GUIs programmatically. This allows for much better control of the content. For me, the crux is to use the UserData properties of the UI elements to store any useful data, including handles to the UI objects you will want to update.
But if you want something clever, then you will have to resort to something Java- or .NET-based.
Also, it's important to remember what MATLAB is best at, and GUIs are not the strong-suit. If you use a programming language where the GUI creation is better, then you will have to compromise on something else, such as the ease of working with array and matrix data.
EDIT: The GUI Layout Toolbox linked to by @Mikhail looks extremely useful.