90% of coders don't know bugger-all about GUI design. That is why QuickBooks sucks a fat one.

A GUI should take up as little overhead as possible, which means you need things like backbuffers and cached data and NOT creating graphics objects at runtime (unless you are doing control arrays which only need to be created at loadtime).

Its fine to do gradients as long as you have an idea of how clock-hungry they are.

Cache everything you can, RAM is cheap, CPU cycles are NOT cheap, remember that.