A lot of people seem to think that being in a foreign country means that you automatically learn the country's language well. Perhaps the most prominent people who believe in this "common-sense truth" are European parents who pay a lot of money to send their children to language schools in England, expecting that they will come back speaking fluent English.
Most immigrants in America don't speak English very well, even after living there for 20 years. Many of them have been making the same basic mistakes for decades - for example, saying things like "He make tea?" instead of "Did he make tea?" or "I help you" instead of "I will help you". They typically speak with strong accents, which enables others to instantly classify them as Asians, Latinos, Russians, etc.
The reason immigrants don't do anything about their grammar and pronunciation is that there is little pressure to do so. Other people can understand them despite their mistakes (sometimes with some effort), and are normally too polite to correct them.
The example of immigrants in America reveals a truth that many language learners find quite shocking: that living in a foreign country simply does not make you speak the country's language well. It does not force you to learn good grammar, good pronunciation, or a large vocabulary, because you can do quite well without those things in everyday life. For example, you can skip all your articles when speaking English ("Give me apple", "Watch is not good") and still be able to shop in America or Britain without much trouble.
Being in a foreign country only forces you to learn what is necessary to survive - the ability to understand everyday language and just enough speaking skills to order pizza and communicate with your co-workers or co-students. The rest is up to you, your motivation and ability to learn - which means that you're not much better off than someone who's learning the language in his own country.
In addition, being in a foreign country often forces you to say incorrect sentences, because it forces you to speak, even if you make a lot of mistakes. When you're in a foreign country, you cannot decide that you will temporarily stop talking to people and focus on writing practice (which would enable you to learn correct grammar better than speaking, because you could take as much time as you needed to look up correct phrases on the Web or in dictionaries). You have to speak, because your life depends on it.
By making mistakes, you reinforce your bad habits, and after a couple of years of saying things like "He make tea?", it's really hard to start speaking correctly. It is important to remember that native speakers will not correct your mistakes. Instead, they will try to be nice and try to understand you, no matter how bad your grammar is.
While going to another country may seem like a sure-fire way to master a foreign language, it is not so. Without sufficient motivation, you will learn very little and are likely to end up speaking in an understandable way, but with lots of mistakes. On the other hand, if you have the motivation, you might as well simulate a foreign-language environment in your own home with foreign-language TV and the Internet. Such an environment will be safer, because it will not force you to speak and reinforce your mistakes. Instead, you can learn at your own pace and concentrate on pronunciation, input and writing before you start speaking.
The advantages of going abroad are:
Easy access to native speakers that you can converse with (though you can also find natives in your own country, or you can just talk with someone who's learning the same language)
the opportunity to perfect your listening skills (trying to understand English-language TV and movies is not quite the same as trying to understand the speech of a teenaged supermarket clerk in Frederick, Maryland) .
The opportunity to learn useful everyday words which are not frequently heard on TV or in movies, e.g. Kleenex, ATM, carpool, parking space, detergent, deli, cereal.
All things considered, learning in your own country will be a safer (and cheaper) option than going abroad, assuming you can motivate yourself and can find opportunities to speak in the language you're learning. After you've learned to speak the language fluently, you can go abroad to polish your listening skills and make your vocabulary a bit more native-like.