One big problem is getting people to read error messages. It's hard work trying to write a relevant, helpful and localized message for every conceivable thing that might go wrong, only to have the conditioned users immediately click the X and call and complain that it's "doesn't work"
`User blindness' is a problem, but good design can also help.
Eg instead of confirmation dialogs make as much undoable as possible. GMail goes so far into that territory (originally by accident) as to introduce a delay before sending your message to give you time to undo.