Again, there are two ways to look at it: either your work is uninspired / low grade, or the customer is picky.
For scenario a & b:
a) you keep trying until you deliver something that is good enough to satisfy the client. Communicate the issues that you are facing as soon as you notice them. You also make sure that they clearly express and that you understand their needs.
b) you agree -prior to starting the job- to a set number of deliverables, hours, etc.. When that goal is met your job is done and you either walk away, or write a new contract.
Edit /add: that's why in an agency you separate the task of acquisition and design... The account manager is more or less detached from the actual performance of the contract. "Sorry but our designers need more time, please write a new check."