Customers are not always right. But they're the ones with the money. You need to work with them to help them figure out what's right (if possible), if you want the money. Often they don't know what they want until they see it, which means going through a few iterations of not-quite.
If you're being paid by the hour, every late change is more billable hours. Smile at the customer, grumble privately, make the change and take the money.
If you're being paid by contract, the contract should have stated that a specific number of changes (measured in estimated additional hours?) would be accepted before certain dates, and that they would cause the target date to be pushed back correspondingly. Beyond that it's maintenance rather than development and must be contracted separately. How much your company lets them cheat on that is something you need to work out, trading off customer satisfaction and your reputation against the additional cost.
If you're being paid by contract and the contract DIDN'T have clauses dealing with changes... well, next time write a better contract; for now, you're sorta stuck if you want this customer to be a good reference for future contracts.
Welcome to the real world. The only thing truly unchanging is change.