Das Einzige, das meine Herangehensweise verändert hat, war, Scope Creep als ein Kundenschulungsproblem zu betrachten, nicht als ein Willenskraftproblem. Du bist nicht gemein, wenn du Grenzen durchsetzt - du verhältst dich damit eigentlich professionell. Wenn du zusätzliche Arbeiten stillschweigend übernimmst, verstehen Kunden wirklich nicht, dass sie mehr verlangen, als sie bezahlt haben. Sie denken, das ist einfach deine Arbeitsweise. Also besteht die Lösung darin, den Umfang von Tag eins an sichtbar und explizit zu machen und dann bei jeder Verschiebung transparent zu sein.
Schreib deinen Vertrag so, dass er klar auflistet, was enthalten ist und was extra kostet. Das muss nicht kompliziert sein - sei einfach konkret bei Leistungen, Anzahl der Überarbeitungsrunden, was als „Feature" zählt versus was als „Bugfix". Wenn dann ein Kunde mitten im Projekt nach etwas Neuem fragt, sage nicht einfach ja. Erkenne stattdessen an, dass es eine gute Idee ist, zeige ihm, dass es außerhalb des ursprünglichen Umfangs liegt, und gib ihm die Wahl: Wir können es für X weitere Stunden/Kosten hinzufügen, oder wir halten Zeitplan und Budget wie geplant. Die meisten Kunden wählen das eine oder andere, sobald sie den Trade-off sehen. Du lehnst sie nicht ab - du machst einfach die Rechnung transparent.
Die anderen Antworten haben den Change-Request-Prozess gut getroffen, deswegen wiederhole ich das nicht. Was ich noch hinzufügen würde: Einen Kunden zu verlieren, weil du Scope durchsetzt, ist eigentlich in Ordnung. Wenn jemand sauer wird, weil du fair für zusätzliche Arbeit bezahlt werden willst, ist das ein Signal, dass dieser Kunde eh nicht großartig gewesen wäre. Die, die es Wert sind zu behalten, werden respektieren, dass du klare Prozesse hast, weil das bedeutet, dass du organisiert und professionell bist, nicht unzuverlässig.