Many ISPs in the USA are providing NAT only IP addresses. I know people that have private-only IP addresses. The problems are more then just inconvenience for bittorrent users. It makes a lot of things suck.
They don't upsell, they just don't talk about it. They just do it. Then performance and reliability drops somewhat and irritates the people that depend on certain VPN software or VoIP for their work or whatever.
The problem ISPs now face is not enough public IPs for their customers, but not enough private IPs for their networks. When your a company like Comcast and you are forced to use multiple duplicate 10.0.0.0/8 networks you know you are running into some serious addressing limitations.
What we have going on right now is that ISPs are doing things like tunneling IPv4 over IPv4 in order to provide the network infrastructure necessary to deliver public addresses to customers. If you are going to give private addresses you are going to have to do some really crazy stuff like combination of tunning NAT connections some multiple NAT'd networks to get the TCP connections to customers. Tunneling IPv4 over IPv4 over Ipv4 type stuff.
On top of this NAT is not some sort of panacea that is going to buy you a lot of time.
The number of ports you have is limited to 16 bits minus whatever needs to be reserved. Each connection on a NAT router takes a port. So I'm guesstimating that leaves you about 30,000 useful TCP connections per public IP address. I am sure that things start to break down before that. Just doing a simple google about "linux" and clicking on a wikipedia link I get about 20 TCP connections started. So for every public facing IP address you can serve 1000-1500 active customers. And this is not really something you can ramp up for peak usage or anything.. it's a hard limit. Once customers start banging against connection number limits then things are going to suck for them.
What is going to happen, what I am guessing is happening is this:
ISPs are going to switch their networks entirely over to IPv6. They will be tunneling IPv4 over IPv6 to their customers. I expect that the larger ISPs are already well on their way. Once the roll out of the migration from IPv6 to IPv4 is complete then they will start fazing out support for DOCSIS 2.x modems and whatever the equivalent for DSL is. The newer 3.0 modems have IPv6 built in as a requirement for the protocol. Then they will require customers to purchase new routers. These things are probably going be pure IPv6 with a single IPv4 address mapped to it that tunnels over the IPv6 network.
'Computer Appliances' will start requiring IPv6 for various things. They won't really be advertising it as such they will just say things like ISP compatibility and DOCSIS requirements and such. It'll be a headache, but it will need to be done. They will require the higher performance that needs the newer level 1 protocols anyways. Blueray players, 'Smart' Televisions, IP-based cable boxes, PS3/XBox/etc, that sort of thing.
One thing that is important to keep in mind is that you don't really need IPv6 support on your 'home NAT router' to have IPv6 support in your appliances and in your OS. Any modern system can have full IPv6 internet access very easily on any "IPv4-only" NAT network. Full stack access. No firewalls, no port limitations, nothing. 100% unfiltered access right through any common NAT firewall. I think things like PS3 support this already. Microsoft already uses it for Windows 7.. it's requirement now for file sharing to work properly nowadays. Linux it's a bit more of a headache, but it's slowly catching up to Microsoft.
So it's not really necessary for customers to upgrade their home routers, but it will make things better.
While all this is happening it will slowly start to dawn on businesses in the USA that they will not be able to do business in certain parts of the world unless they have some sort of IPv6 connectivity support. Especially with China.
As IPv6 gradually moves to mainstream it will free up more and more IPv4 addresses to extend the useful life of that protocol.