I feel your pain....
The bad news is: depending on exactly what kind of clients you're dealing with, this might be business as usual.
A common general problem is basically that clients don't know what they want. They usually know what they want to be achieved, in terms of a business goal, but they often have no idea how it should look in terms of the software solution. So in many cases you'll find yourself in this iterative cycle where a project bounces back and forth for five times as long as the initial estimate was, because the client keeps changing their mind and wants the solution tweaked and re-tweaked. And yes, it's not unusual for the final result to be morphed into something entirely different to what the initial goal looked like.
I had an epic example of this happen a couple of years ago - a project that initially took 10 weeks to code turned into a 15 month re-iteration grind. In that case, it was mainly because different managers and departments at the client company wanted different things, so they kept sending the work back, to be tweaked and re-tweaked (our software is subscription based and this was a major client, so this was no financial skin off our back - just a big technical annoyance really).
So basically my advice is this:
If this is the way your particular industry and these clients are (that's a big IF), then just get used to it. Think of it as being an Agile, maintenance-oriented job (this is how my current gig is, more or less). :)
If this isn't the way things are meant to be done, and you are catching blame for the long turnarounds, then speak up to your bosses. Explain to them that there are communication problems and that the specifications that are coming through to you from the clients are not clear enough for you to implement the desired solution. You don't want to find yourself in the situation where you're catching blame for not giving the clients what they want, if you're not getting all the required information to give them what they want.