I am working for a company in India — not as an employee, but on a full time (and long term) “retainer” basis – I remotely do whatever design and development work that they want me to do.
The time zone difference is sometimes useful: any problems that they find, or improvements that they want to the Java based web application that I designed and wrote for their business processes can be done (by me) during the day, during my customers’ overnight work break. This gives me a more leisurely feeling about making changes and doing local testing. I also start work very early in the morning (because I sometimes like to hike during the day), so we do have some overlap working time.
While historically most of my work is for U.S. organizations, in the last 5 years, I have also had the pleasure of (remotely) working with people in India, Brazil, Russia, Romania, Chile, England, New Zealand, Australia, Singapore, and probably other places that have slipped my mind. Lots of fun, but it is a bummer to not get face to face time with most of these people. I still enjoy onsite work in order to get “white board time” in with colleagues.