Every time I hear about switching to IPv6, especially in a corporate environment I foam a little at the mouth. But right now I'm going to rant about the home user case.
Maybe it's time to sit down, realize that people, NAT, firewalls and such aren't going away, and to simplify the mess than is IPv6. One of the huge things is, IPv6 attempts to do everything and fix all the flaws of IPv4, which is great, but it also makes IPv6 a rather intimidating transition. I personally won't switch over until I have it - there's a huge learning curve involved. And people are rejoicing that everyone will have public IPs again, yet forgetting that everyone will promptly put up firewalls ensuring that most IPs aren't usable. ISPs will probably help as well by firewalling off everything but ::1 to protect customers (and sell you more for $5/month).
Perhaps the quickest way to transition is make it invisible. Sell me a box I can replace my router with and I'll be on the IPv6 internet in no time. This box will do IPv4 to IPv6 translation, IPv6 to IPv4 translation, IPv4 NAT, and iPv6 NAT. Why NAT? Because I personally don't want to bother setting up all my machines with proper IPv6 addressing. I'll just assign them FC00::1 - FC00::something as I do with IPv4. The IPv6 NAT will worry about whatever my ISP gives it. If I change ISP, I don't bother renumbering my network, only the IPv6 NAT worries since it has the external IP. So every machine gets two IPs - FC00::1 routable to the router, and the link-local.
IPv4 to IPv6 translation helps all those of us with legacy devices that only od IPv4 - they can talk to IPv6 through some trickery. Microsoft uses ipv6-literal.net as a virtual domain name that resolves to an IPv6 address. Advanced machines do this inside their resolver automatically without involvement. IPv4 machines send a regular DNS request. The router recognizes and resolves it as an IPv6 address and returns a faked IPv4 address (e.g., 10.something - something not on the local subnet). The IPv4 client tries to connect and the router intercepts the flow, unwraps the IPv4 header, wraps it inside a new IPv6 header, and forwards onto the Internet. (Same happens if an IPv4 client connects to an IPv6 host).
And it works the other way too - IPv6 only client connecting to an IPv4 host gets the IPv6 header stripped out and an IPv4 header attached.
Then boom, put it in all the routers and there's your transition plan. Home users replace their box and they're done for the day - they can speak IPv4 and IPv6 without worrying about crap. Enterprise users can use an enterprise version of this so they keep their IPv4 investment (face it - most have IPv4 only routers and they aren't willing to bother paying the extra $10k/switch to ugprade their L3 switches to support IPv6). Give them a box they can plop on their network and have IPv6 internet connectivity without having to pay for IPv6 equipment internally.
Telecom companies would buy it in droves so they don't have to worry about the millions of IPv6 incapable phones out there not being able to connect to the Internet - they can use the box and keep that data revenue coming in.
And everyone else who wants what IPv6 public IPs, they just do the exact same thing for the past 10 years that IPv6 has been around.
There we have it - a box to help with the transition for everyone else who doesn't want to mess with IPv6, while everyone who wants what IPv6 offers can live without it. Just make it and it'll make the IPv6 transition much easier than it's been going now for the past decade or so. Me personally, I just want a box and be done with it. Everyone will be IPv6 ready in no time.