Although I recently wrote that there is no best process for designing user interfaces (or, probably, anything), there are some best practices. Here's one best practice that I've boiled down to four words:
Define. Design. Refine. Iterate.The iteration is the part that's most often missed. Far too often, designers think that they defined the whole problem at the beginning so all they need to do after that is to design it. But thinking doesn't make it so -- it's usually the case that the original definition missed some key elements. Sometimes it's just plain wrong.
It's much, much cheaper to iterate on the definition and the design before you ship something than afterwards, when your users tell you that you built the wrong thing.