"It's really simple, I just want one screen."
"Wow, that [shiny thing] must have taken a lot of work."
I find that non-technical clients are very bad at estimating how simple or complex the functionality they are asking for is. Their estimates of how hard things are seem to revolve mainly around how much of the UI they can see, and they think of the computer as a person that can answer open ended questions.
As programmers we know this is not the case. Often complex interfaces are just a matter of doing more wiring, and it is often the 'magic button' that knows the correct answer that requires the most work (or can not actually be implemented on a computer today because it requires strong AI).
We also know that this causes problems, particularly when estimating and delivering work, or when 'small changes' require a lot of back end work, and it costs more money or takes more time to get them done.
What are some ways to gracefully handle the complexity mismatch and keep your clients happy?