Companies hiring you will likely not want to pay more than the market rate for you, where "market" is defined as your geographical area. This limits the desirability of being a remote worker to begin with. It's also a mistake, IMO; companies that use this approach are likely to find themselves giving programmers nice CVs, who then go on to move to a different country with a better "market".
Another big barrier for smaller companies is the logistical difficulties in payroll, currency, international banking, tax compliance etc. - it's easier to be a contractor.
Thirdly, the company culture needs to be set up for remote working. Otherwise you'll have poor communications, and the remote people won't be plugged in to what's going on.