The Coding Horror Blog regularly gives great ideas. Just some examples:
- Exploratory and incremental learning
- Self-documenting user interface
- Incremental search of features/Smart keyboard access
- Task-oriented design (ribbon instead of menus and toolbars)
- Providing undo instead of constant confirmation
Another aspect: use scalable icons to solve the problem of multiple user screen resolutions without maintaining different resolution bitmaps.