First of all read a lot. Read local communities like Reddit, HN (here), slashdot, etc. This will make you familiar with the daily language. Second, listen a lot. Watch movies with original sound and English subtitles. Try to understand, try to make sense of it. If you listen English songs, try to listen a little more attentive. Then write a lot. Try to take your notes in English. Comment your code in English. Try to…
I think one of the biggest obstacles in speaking is overcoming the fear of saying something wrong, or not being understood. At least that was the case for me. Once you get over that fear and get a more "I don't give a crap" attitude towards if what you're saying is correct, and instead just say it, you've come a long way and it will help you improve.
Simple version of what I'm trying to convey:
Try to not be afraid to say something wrong, just speak your mind. Don't worry about grammar when you speak. It will come naturally after a while.
Personally I learnt most my spoken English through co-operative computer games and speaking to other players over ventrilo / mumble or in-game voice comms. The fear of saying something wrong or being misunderstood was minimized in this online setting, sitting safely at home but still communicating with real people.