Magic Jack is definitely great for outgoing calls to the US. WiFi is all over the place, so there's almost always a way to make free calls to the US.
I have a Sprint iPhone 5s. For me, the roaming charges are just too huge, and anyone that would be calling my US number is with me on the island anyway, so I have a Telcel SIM that gives me a local number that all my friends have. I still use Magic Jack to make (quite rare) calls to the US, because even if I'm using cellular data it's still cheaper and if I'm on WiFi it's free. You have to get the SIM slot on any Sprint phone unlocked for international use, but they will do that.
If I really, really needed to be reachable on a US number I'd either just go ahead and roam on my US number and pay the charges but would try to place outgoing calls when I had WiFi and could use Magic Jack or Google Voice.
jujulin, with an ATT phone you can definitely get it unlocked by one of many companies that do this for a fee if ATT won't do it. That would let you use a TelCel SIM for relatively inexpensive calls and data, but people calling you would need to use your Mexico number. If you need to use your regular US number, you're stuck with roaming, but get Droidwall and turn off cellular data for anything that you don't really need. It'll let those apps still work when you have WiFi.