Good project managers know the importance of managing scope. The customer comes along, asks for a change, you fill out your change request form and get the change scheduled, possibly in a future release or iteration.
But it's not that simple, is it? If you take a hard stand, you run the risk of creating animosity with your customer. But on the flip side, if you give in to much, your project gets out of control and nothing gets delivered.
So how do you decide where to draw the line? You want to make the customer happy by delivering what they want but the key is to deliver.
I've had this situation come up recently with my customer. My compromise was to put a couple of the higher priority requests into the current release, ones that don't have much of an impact on the schedule. The rest I have slotted for the next release. At the same time, I reinforced the idea that it's more important to get the new tool into production, even without every feature, than it is to wait and get it perfect. Once they start using the tool, they will come up with other features, and some of the ones they are thinking about now won't seem so important.
So keep thinking win-win. How you can give the customer what they want while still delivering as soon as possible.