viewing things from a user's point of view often helps. i try and ask myself, "if i was doing X, how would i do it if i had never used this software before? how would i do it if i weren't using a computer?" this can be particularly difficult, since it means jumping out of our own context as software designers and code crunchers.
a trivial example i recently ran into was digiKam's album properties dialog. it had a list box showing all the collections that you could add this album to. you could only add it to one collection, and if you wanted to add it to a collection that didn't exist yet, you had to click the Add button and fill in a sub-dialog first. you could also delete collections here, which made sense from the code's point of view, but from a user POV it was a bit odd that you could delete a collection here and have it affect all your other albums, too!
so i re-jigged the dialog a bit. nothing fancy really, as i was trying to work through a number of dialogs that evening, but here's the result:
the collections item is now a single, editable drop down. if you type in a name that doesn't exist in your collections, it gets created for you. you can also select no collection (the blank entry) or one that you set up previously in the drop down. deleting collections is now done solely in the collections management dialog. this frees up the user to just "put the album in a collection" without having to think about how to manage their collections; it also made the dialog a lot shorter.