Hi Filipe,
I learned English in Highschool with old traditional books and non-native teachers. My level was not as good as I wanted and after school I really wanted to improve my skills. A friend recommended a vocabulary trainer online and learning during my university career was more or less successfull. After uni, I went some month abroad to travel and to learn English.
I visited a language school in Cape Town and this was finally the best way for me. I lived in a host familiy and was "forced" to speak English the whole day. Cape Town is probably one of the most beautiful cities ever and learning there is a lot of fun. Especially the native teachers and the atmosphere at the school were really good. We did a lot of activities in our free time and I found a lot of local and international friends. My language school was Ailola Cape Town, a small and very private school directly at the sea. I can only recommend to visit them, they offer a lot of special courses. http://www.ailolacapetown.com/
I think there are multiple ways of learning a language. For me, the most effective way was to go directly to a native country. You get to know cultures and international contacts and my level improved a lot. I try to repeat regulary what I did in my language school and to read books, magazines and english newspaper