I agree that a combination of methods is important.
One very helpful tool if you are serious is getting some language learning software. You should note that they are not all the same, and each program, like Rosetta Stone, for example, has a specific language learning philosophy which others disagree with.
You can find reviews of the different programs and their approaches here: http://ebestlanguagelearningsoftware.com/i-want-to...
But these days, having a good language learning program is essential.