Be careful in choosing the right colors, know what a color means, and which feelings it induces to the user. There's an important difference in perception of even hard vs. oval edges. Know how users tend to use the program and try to solve their problem first. Then minimize things, see what you can automate, but not annoyingly smart -- like Word's Clippy. Then, make the thing look good. That's how you should design a good user interface. Never the other way around.
There's one more thing I'd like to point out. A lot of people here pointed out HCI as a good starting point. Well... It's nice to know the things already done on this, but If you have a radical new idea that you think can "shift the paradigm of user interfaces", don't just ignore it. Obviously don't just put anything in, do some testing, prototyping first, see if it fits the above, but don't just let it go, because it's not standard practice!