Sometime ago I bought a Blackberry Curve 8320 from T-Mobile in the US. I needed to have a US phone number with me but at the same time I hate to pay the $3-4/minute roaming rates that T-Mobile (and everyone else) charges when I'm out of the US. In addition the Wifi support, this particular model has a feature called UMA - Unlicensed Mobile Access - basically it allows the cellular call to be routed via the Wifi connection over the Internet. That basically means that I can have a US number at home and in my office in Sri Lanka and pay nothing extra for the call. (In fact the call is actually free - its part of a flat rate service you buy from T-Mobile.)
Anyway, right now I'm in a location where there's no 3G. However, my wife has a 3G connection from Mobitel using a Huawei E220 HSDPA USB modem that's connected to her laptop. I also have a pocket router (a D-Link DWL-G730AP) I always carry around with me. She also runs Ubuntu on her machine - so I set up her machine to do IP forwarding between the 3G connection (which is a USB device) and the wired ethernet connection to the router. So we have our own little wifi hotspot .. my laptop (from which I'm writing this blog) is connected via the wifi router thru her machine via 3G to the Internet.
Ok that bit is easy. The cool thing is my cell phone also is now connected thru that .. that means right now if someone calls my US cell phone number, its going thru that person's network (cellular or otherwise), to T-Mobile and then over the Internet via Mobitel's IP network via 3G to my wife's laptop then over wired ethernet to my router and then wirelessly to my cell phone. In the process the packets would've survived 2 levels of NATing (once by my router, once by the laptop).
Not bad, eh?