Maybe this can help:
https://freelancing.stackexchange.com/questions/3226/project-based-freelance-project-requiring-multiple-unexpected-redos-from-clien/3337#3337.
I like to ask a lot of questions before getting started, prepare quick sketches, and split my projects in "steps"; and then each step gets approved. Once a client goes back, it's a revision that is charged.
I also explain to clients they have to provide their final texts and the images they want to use to avoid revisions.
Always be specific and yes, explain clearly the process before you get started.
But since you're already stuck with this...
When clients are back to using the html site as a "sketch zone" as your client does, stop changing the CSS and the html, and go back to using a plan or showing them a JPG of ONE page (or sections of it). Explain them that when you start doing CSS and html, it's not the time to play around and modify things (at least not menus and big changes.) You can be nice and tell them it's for their own good since the coding requires some planning and it avoids mistakes. Don't tell stuff like "it's easy", they might end up believing it's truly easy for you.
So take a screenshot of a main page, do the changes in Photoshop or Illustrator or Indesign, and show them a JPG "proof" that they will approve. Have the main layout approved first, not all 6 pages!
On your proof, add a mention about "any changes after this is approved will be charged at XX/hour". And instead of sending that proof by email, host it somewhere and send them an url; this way it will appear at 100% in their browser and they'll have a better idea of what to expect.
Personally, I like to present them 2-4 options; this way they can say they like the menu of A, the body font of B and the footer of C for example. Then I present them another set of proofs with the elements they preferred, and other options if necessary. Usually it ends up limiting the possible requests they might have because you showed them pretty much everything possible at this point! Your proofs don't need to be perfect, they're like a sketch; just do some copy/paste and move things around.
Once it's approved, you can go back to coding. If you have to come back again to "sketching" or modify your code, start charging at hourly rate.
You need to do something like this otherwise they'll keep going until december 2016 if they get all that free work from you and if you don't require them to fully approve some of your work. Right now, they're not taking any decision.
PS: I don't like using design software to do sketches of the websites, and I'm sure you don't either. It's way simpler sometimes to do it straight in CSS but... the reason why you're doing this is not so much to make it faster to do the website but to make your client feel like you're also making them go back to step 1! All they want in the end is to have their website done; when you go back to showing them JPGs, they get a bit less excited and you get back some control on the situation.
They will approve your JPGs proofs faster than the real website you're showing them because they will want to see the result "live" as soon as possible.