Maybe I'm being silly here, and missing something complex, but wouldn't it have been simple just to allocate the entire IPv4 address space to a 32bit section of the IPv6 address space, and allow IPv4 to simply operate within an IPv6 network?
That is, an IPv6 router would know if it got an address only 32bits long, to stick 96 0's on the front of it, or whatever other prefix is decided for IPv4 address space.
Home users wouldn't even have to do anything or change their IPs, the whole lot would be accessable to anyone that had an IPv6 connection (so allocate them to all new customers) and no kit would HAVE to be replaced by end users (unless they wanted to access things outside the IPv4 address range, which would be small for a long time anyway.
There wouldn't be a need for anyone to change any existing IPs, if they have them memorised or whatever.
Go on, tell me how wrong I am and how I have missed essential points!