Here are a couple of simple techniques I use in my client interactions which might be helpful to others.
Always write everything down.
Always? Always. Everything? Everything. Anything on a whiteboard must be written down. Anything you said "yes" to must be written down. Anything your client says must be written down. If your handwriting is awful, bring a tape recorder and transcribe later. It's an absolutely critical step: at some point your mockups will deviate from what the client had in mind, and having copious, well-organized notes is an excellent way to explain point by point how your design incorporates his or her objectives.
Have at least two resources that defend your position
This goes hand in hand with Meg's "Educate, Educate" philosophy. Keep a text file or bookmark folder containing examples of major UI elements such as tabs, buttons, form structures, layouts, et cetera. Try to stick to corporate sites or well-known names. It's significantly easier to push your agenda if you can show a client that other major players are doing the same. If your client insists on a particular widget, ask if he or she can point you to another site using it. This tells the client that you're open to ideas, and it gives you something concrete to either incorporate or argue against.
Don't draw a picture until you have to.
Clients tend to lock on to the first thing you show them. It's not their fault; pictures just happen to be the easiest things to mark up and critique. At the start of a project, spend as much time as you can to learn your client's business objectives and how they're prioritized. Put them on a whiteboard and make sure you and your client are 100% in agreement. Then, once you have a mockup, walk them through each of the objectives, pointing out why you did what you did. It shows early on that you have a good grasp of what the client's needs are and can effectively translate those objectives into a useable site.