I need to know if it is possible to setup the eStore so that shipping is only available in one country (Mexico), but billing details in any country (since people use bank cards from all over the world).
If I unpublish all countries but Mexico in the Configuration > Countries section then all countries (but Mexico) disappear in both billing and shipping drops. I already created a GeoZone for only Mexico and applied it to the free shipping method, but all countries keep appearing when input shipping address.
I think that your solution should work. Although all countries are available in the Shipping Address, but if customer choose a country which is not Mexico, then there is no available shipping method at Step 4 so customer can not checkout.
You can display some message to tell customers to choose Mexico as shipping address there if you want.