I have had the good fortune to teach a wide variety of courses, ranging from the introductory to the graduate level. In my experience, there is a lot of truth in the late John Wheeler's dictum that “If you want to learn, teach.” Students have a way of asking questions that forces one to really understand things. The prospect of such questions can be a bit intimidating, but in the long run, the process can be quite satisfying.
My favorite teaching assignments include PHY205 (a.k.a. “Death Mechanics”), PHY312 (Advanced Lab), and PHY103/104 (Calculus-based physics for science and engineering majors). PHY205, which was nominally a course in Classical Mechanics, is in many ways an applied math course. It serves as a great bridge between first-year physics and quantum mechanics. The syllabus included a set of wonderful problems, some of which were devilishly difficult. Teaching PHY312 is a nice way to learn about experiments in areas other than one's own. Also, since many of the experiments correspond to major discoveries of the past, it's a lot of fun for those interested in the history of physics. The introductory courses (PHY103/PHY104) are concept rich. The topics covered are constantly encountered in both research and in every day life.