I too have a Pi running on another continent.
My application is a controller for my heater/cooler in my second home in Texas. There a numer of things you need to consider, as the other posters have alluded too as well.
First priority is to get a reliable power supply for the Pi. One that continues to provide clean power during a temporary glitch through a UPS function, and that also provides a clean and secure method to powerdown the Pi when the power is gone for a longer period, and to provide a clean window of power to let the Pi start. This is easy to be overlooked, but you don't want to have a power glitch while the Pi is booting. The Pi should boot and powerdown cleanly, and should always restart itself.
For my system I designed such a power supply from scratch, using normally available components and no seperate controller. You can have a look here :
http://www.raspberrypi.org/forums/viewtopic.php?t=50470
It is a little long winded because the post goes through the design process, but in the end, you'll learn to avoid the pitfalls and see the final solution. This has now been operating for more than a year without a hitch.
Once you have solved this you can address the next couple of challenges. The second one is to make sure your application continues to run without a crash. Carefull design and using try-except's helps. Seperating time critical loops into a seperate thread can help to avoid endless loops or other hung issues. In case there is a hang or crash, you need to restart the application automatically. I do that with a seperate watchdog program that gets launched by cron. It checks if there is one instance of the program running (not more, and not less) and otherwise it will restart the application. This is made easier if you run your application as a daemon.
Make sure that your application can be restarted cleanly at all times, so this probably means that you need to preserve the latest state. I do that by putting that information in a file by the use of json structures.
The third element is when your application gets into a hung state or endless loop. You need to have a watchdog function in your code and in the the watchdog itself to catch that. I do that by having my application write the time into a file. The watchdog program reads that and compares if the delta is too great, in which case it will restart the application.
The fourth possibility is that OS will hang. I use the Debian/Pi hardware watchdog timer for that situation. I've never seen this happen, but still.
Lastly, if your application communicates over the internet, you need to add code to check the availability of that link, and either restart the internet interface, or if all else fails, restart the Pi.
A last remaining issue deals with the life-time of the SD Card. I started this about two years ago, when the SD card was a weak link. This is now much improved, but I still use a RAM disk for my files and logs. Also make sure you have a large SD card so the wear-leveling can do its job.
Of course, a Pi was never designed to be used under these constraints, but with some carefull hardware and software design, you can make this work reliably enough.
Hope this helps, paulv