It would be interesting to use IAX2 instead of SIP. Unlike SIP, IAX(2) is transparent to NAT.
NAT was one of the problems that Skype had to face, resorting to using routable clients to funnel traffic to clients behind NAT. Yes, IPv6 is right around the corner, but VoIP should not have to wait for its implementation.
When you want to have a mass product, you need to work with the reality that many possible clients will not have a directly routable IP.