There are a LOT of different ways to go about learning the code. But those who have succeeded in learning the code to a very high level of expertise all seem to agree with the basic ideas published by Don Wallace in 1936, especially the idea that it is the sound that one must learn and NOT to rely on any visual memorization techniques.
I'll give you a more recent example, Chuck Adams. K7QO, who is very well known in the QRP community. As a teenager in Texas, Chuck learned the code in two nights, took a CW test on the third day and passed at a speed of 12 wpm. He went on to compete in many code competitions, winning often at speeds of 40-45 wpm and even as high as 140 wpm. He can consistently carry on QSO's at 110-120 wpm. Clearly he had some natural talent for this skill.
Do we need to reach these levels to consider that we have mastered the code? I don't think so. Note that in the article I linked to above, Chuck said, "You hear/see words in your mind instantly that came from another human mind miles away without consciously hearing the sounds from the speaker. When we talk to people we don’t think about the sounds, but the ideas being given." I believe someone who uses the code in that way has certainly mastered the code. During World War II when the military trained Morse code operators, they trained for 16 weeks for about 8 hours a day. Is that what we need to plan on doing? Definitely not. We're learning the code to have some fun, to talk with other hams, not to win a war. I think it's best to learn the code to the point where one can consistently use it to have some fun. Of course to achieve that, one will need to practice a lot. But the practice should be fun along the way.
So at what speed do we need to learn to do CW? Well the answer to that is "It depends." When I started out, I had passed the CW test for my Novice license at 5 wpm. When that first license came to me in the mail, I started having CW QSO's on the air with other Novices at 5-8 wpm. By the end of the summer, I was doing it at 10-15 wpm. I was having great fun with the code at every step along the way! No kidding! To upgrade to General Class I had to pass a CW test at 13 wpm, which I did on my first try. But all the code requirements have now been dropped. You just need to master the code at a speed that you will need in whatever situation in which you want to use the code.
So just proceed on a gradient and enjoy the fun of the code at every step along the way. There are many clubs that promote the use of Morse Code on the air, such as FISTS, SKCC, NAQCC, and many others. My original Elmer is very active in SKCC and his description of their activities sounded to me like a great way for a new person to get started. They encourage hams to have CW QSO's with others at whatever speed is comfortable for them. Members are happy to slow down to any speed that is comfortable for the other operator.
There are also lots of CW contests that are a lot of fun. Many of these routinely operate at 20-35 wpm, but that doesn't mean you must have mastered the code at those speeds to be able to participate. Listen to the podcast from K8XT that I linked to in an earlier posting that discussed how to have a lot of fun with CW contesting, even as you are learning to operate on CW at slower speeds.