My experience is such that I started to learn CW on February 2012 and by the September 2012 I managed to learn all characters+nubers+few special signs (., , and /). It helped a lot to be in a group and have practice twice a week. Now after 6 month of end of the course I am able to copy/send at around 25WPM. But the point is, if you want to learn you need to practice. I am practicing almost every day (almost meaning every day, skipping only few days per month) using LCWO.net and it pays off.
Enjoying the hobby and just listening to CW on the band also helps a lot. Just listen and try to decode. Usually QSO's are almost the same or at least wery similar so when you can predict things decoding becomes easier
Don't give up and keep practicing!