The key point I agree with most from other answers is experience and lots of it. But in so doing the experience must keep your level of learning accelerating and not plateauing.
Several months ago I started with F#.
For the first week I read all of the links from the F# site.
For the next few weeks I ordered several books on F# and read them. Do yourself a favor and stay away from e-books that aren't PDF. The hard print versions are good but the e-books are terrible.
For the next few weeks I finally joined StackOverflow and started reading lots of questions and writing some code from scratch.
At this point I didn't want to plateau which sounds like where you are at. Having learned many languages in the past, the best way I found to learn a language is to learn about it and its relatives.
Relatives:
- C#, Java
- Different dialects of SQL
- ML, Ocaml, F#
- HTML, LaTeX are distant relatives
- ANTLR, JavaCC
The big difference here is that in learning the relative language you will have to learn the environment and particulars of the relative and thus in resolving how to understand the underlying common concept will learn the language you want better. Now to learn something meaningful, pick a real world application and translate that, it will push you into learning things like debugging, modules if they have it, tools, user groups, and so on. A programming language is more than just a language.
When I did this for F# a several months ago I started translating a Proof Assistant from OCaml to F#. While I still have holes in some of my F# knowledge, my rate of learning has far surpassed any previous level of learning a new language. Since I am nearing the completion of this project, I am now seeking more advanced concepts of the language.
So not only accumulate experience, but accumulate experience that pushes you to keep researching. I spend more than half my time researching topics related to F# and sometimes spend whole weeks without writing one line of F#, but when I come back to the problem or concept that sent me off to learn, I am so much more ready for it the next time. If you look at my OCaml to F# and other F# questions under my stackoverflow profile you will see how fast my learning has progressed. In some areas I have reached the point that I can't ask specific F# questions because it is the concept I need and people in other languages sometimes unknowingly have the answer.