With the official exhaustion of IPv4 address space in this part of the world (other than what ISPs have in reserve), the future of amateur VoIP applications seems to be in question, as many of our applications require a true peer-peer connection, which in turn requires a public IP address.
I believe we should be looking at migrating our systems to IPv6. While native connections are still not too common, modern operating systems provide some alternatives worth considering. Windows Vista and later come with Teredo IPv6 tunneling built in. Applications can take advantage of this support to access IPv6. 6to4 tunneling is also readily available these days, and is supported by all modern OSs.
Of course, the ultimate solution is to shop around for an ISP that does support IPv6 natively. They aren't common, but they do exist (I'm on one myself). IPv6 opens up a whole new range of possibilities, and takes away some of the NAT limitations that have plagued our applications over the last 10+ years.