Sometimes, despite your best efforts as a developer, you end up with unhappy users. And that's OK.
In "Consultants: It's not the theory, it's the execution", Chip Camden makes this point:
Sometimes you need to say no to user requests. (Unfortunately, not all user stories have happy endings.)
Whatever you do, there will be times when someone is unhappy with you. It matters not that you are the most talented developer ever known, or the most gifted designer that will ever be seen, someone will not like what you have done. It may be your politics, it may be your attitude, it may have no relation to reality -- you will run into people that you just can't please.
Because defining requirements is so fiendishly difficult, software developers have a special problem in this regard -- and especially when the user does not themselves know what they want, but they will "know it when I see it."
Often if you have one customer, you can completely satify them (but not always). When you have numerous customers, you will never satisfy all of their wants, even if given infinite resources; those wants may very well even be contradictory. (There are people with contradictory wants -- "the software should be so simple that I can modify it if necessary" and "the software should just know what it is that I want at that moment.")
Once you have absorbed this idea (you will not please everyone all of the time), you can then concentrate on writing code, without that fear of displeasing a customer blocking your progress.
(The rest of life is best served by learning this lesson, too.)