YARRRRR!
My 2 cents for this thread: I used to focus solely on making an app as pretty as possible, until I realized the negative impact it can have on performance. The unfortunate reality is that some users (especially in big corporate environments) don't have all the super-computers we develop and test the apps on, so you HAVE to downscale the UI complexity in order to have something usable.
The trick lies in trying to make the app as easy to navigate as possible, incorporating minimal UI-bling to still give it a clean, professional look. This applies to web-sites as well. These days I see myself using minimal images to achieve a maximum effect. Clean, uncluttered UI allows users to navigate your site / app with ease, finding the information they require much faster.
I've received several compliments on the ease-of-use of my latest UI-upgrade to our solution, but it is still nowhere where I want it to be. The framework for the solution is roughly 3 years old, so rebuilding 3 years worth of ASPX pages is a nightmare, considering there's other work that also needs to be done.
Just to bring the whole UI thing into perspective: Windows Live Messenger incorporates some fancy WPF-based UI, adding a degree of sluggishness to the whole experience. It looks pretty, but feels a bit slow. Compare this to Skype, which uses normal Windows-based UI and it somehow feels a lot more responsive. Granted, Skype uses almost double the memory that WLM uses, but it still feels faster over all...
Wow - I'm just babbling on this morning. Guess I need that third cup of coffee after all...
EDIT: To add to the whole custom-control thing. When I develop custom controls, I make sure they perform the FUNCTION they are supposed to fulfill, rather than to achieve a specific LOOK. It's a case of function-over-form...