I've been involved in hiring non-local people and doing the paperwork to get the visa.

1) Yes, there are many, many companies who have difficulty finding good talent locally and are forced to look at the international market for talent.

2) Yes, they can get a visa for you if you are good enough (see below)

3) As others have said, remote working from your own country is definitely a possibility. I do it from Japan (and work very strange hours so that I can work with others in the UK). Working remotely is a skill in itself. If you are interested in influencing process (and it seems that you are), then I would recommend staying away from remoting unless the rest of the team is also remote. If you can go with the flow and just write code no matter which way the process goes, then remote development may be for you. The main problem with influencing others remotely is that you don't end up in the right conversations at the right time.

If you try to get someone to sponsor a visa for you, the main issue is: are you good enough? The rules for sponsoring visas depends on the country, but as there is a world wide shortage of good programmers, you are likely to find someone willing to hire you (especially if you aren't picky about where you go). As others have said, English is the language used generally, but if you wrote the above yourself, then I think your English is probably fine.

You should consider whether or not someone hiring you is good enough for you. Although I don't know exactly what is causing your problem in your current job, "I feel like I'm at a dead end because we do thing in a crappy way and nobody will listen to me" is a very common situation in many companies.

Assuming you want to "do thing right" (according to your own definition of "right"), it means you have to be a bit more picky about where you work. Your main hurdle is to show that you have skills that they couldn't find in their home market.

As you mentioned JS, here's the kind of thing that I mean:

Level 1: I can write basic front end code that uses jQuery to get things done. I have written a few functions on my own, but mostly copy and paste things from Stack Overflow.

Level 2: I can write dynamic front end web applications using one or more frameworks. I can use these frameworks fluently, but rarely go outside of them.

Level 3: I write code in JS. If you want, I will use whatever framework you want, but it doesn't really matter to me. I'm familiar with many styles of programming and can use testing frameworks like Jasmine well.

Level 4: I'm an expert in JS. I routinely contribute bug fixes, and features to various libraries. I write blog posts about how to write better JS applications.

Level 5: I am an internationally renown expert in JS. I maintain one of the really popular frameworks, or I have written books that are popular on the topic.

Basically, I can find thousands of JS "programmers" in the Level 1 category. I don't want them, even if they are cheap.

We get hundreds of CVs from local people in the Level 2 category. We might consider a local person for a junior position, but would definitely not go out of our way to bring in someone at that level.

Level 3 starts to become interesting and we would probably interview someone who needs a visa. At this level, though, you have to convince us that you are super talented to make us want to go through the effort and cost of sponsoring you.

At level 4, you are demonstrating that you have rare skills and initiative. Although personally I think it's actually a fairly low bar to hit, the number of people who do this kind of thing is really very small. It's nice because we can evaluate your skills to a certain degree before trying to hire you.

At level 5, it is trivial for us to sponsor a visa. We still might not hire you if we think you aren't actually a good fit for our team, but I pretty much guarantee that we would eagerly interview you.

Of course there are many more things we consider when hiring people, the above is really just the kind of thing we look at with respect to sponsoring a visa. We just can't justify to ourselves or the government that we couldn't find someone locally unless there is something obviously special about you.

Having said that, you may notice that putting yourself in a Level 4 or even Level 5 position is not something that is outside of your control. Working in a "dead end" job while you spend your time making yourself more marketable to a worldwide audience is probably not the worst thing you could do in the world.

I hope this helps :-)