It's hard to argue that there was no transition plan. There were in fact at least three transition plans for the selected approach (dual stack, 6to4, and tunneling) some of which have been discarded along the way; while others came to be based on operational experience. Moreover, the only way to really know that a transition mechanism is really going to work is to let it out of the lab. And ALL of the proposals would have suffered the very same transition pains, because just as Jeroen has pointed out, the pain stretched all the way to the application.
I don't think it's reasonable to argue that we should have waited for some other mythical better proposal to come along. I don't recall anyone arguing for that at the time, and there's no reason to believe that such a mythical proposal would have ever come to be in any foreseeable time frame. In fact Erik Fair, Dave Crocker, Tom Kessler and I argued the very opposite, that we were digging ourselves a hole with NAT. Your argument at the time (Interop '95, Vegas) was that the IETF didn't have the right to dictate address usage to deployments. True enough, but then people shouldn't hang their woes on the IETF.
As I mentioned earlier, the fundamental issue was that there were no ng proposals that were in fact substitutable resources for v4, and NAT was. From there, economics has ruled, arguments be damned.
"real compatibility with ipv4 was disdained. the transition plan was dual stack and v4 would go away in a handful of years. the 93 transition mechanisms were desperate add-ons when v4 did not go away. and dual stack does not scale, as it requires v4 space proportional to deployed v6 space."
we are left to make the mess work for the users, while being excoriated for not doing it quickly or well enough, and for trying to make ends meet financially.”