I'm probably not a good example to use, since I often skipped lectures, turned in late assignments, hardly ever studied, and was pretty much the definition of the lazy, unmotivated student - but I still managed to make it through so perhaps I can offer a counter-perspective regarding how I personally learned physics (since my experience was rather different from the conventional wisdom in this regard).
First, I found working in groups to be counter-productive. If I didn't understand something after reading the textbook or listening to my professor, I found that I was unlikely to come to any greater understanding talking with equally confused fellow students. Sure, if you bounce things around enough in a study group you might eventually, collectively be able to work out how to produce an answer to the problem at hand, but that doesn't mean that you, personally, understand all of the details of each step of the problem - which mean that when a similar problem comes up on a test you'll be out of luck.
Second, I'm not an auditory learner, so I often found lectures to be a waste of time (even for my graduate level courses). My goal in attending the lectures would typically be just to get my bearings on what material the class was currently covering, after which I'd learn the material on my own. Part of the reason for this is that I cannot learn things sequentially; I have to be able to see the big picture first before the details start to make sense (this is exactly opposite of the way most material is taught in lectures).
Third, for me, memorization was pointless. Again, this is because I can't understand something without seeing the big picture - without coming to grips with how it's interconnected with everything else I know. Memorizing the process for solving a single, individual problem never helped.
So, when I set about to learn something, I often followed a procedure similar to what andryd9 described. The first thing I'd do is look at the assigned problems and try to figure out exactly what I did and did not understand about each one. Once I knew what I didn't know, I'd start back-searching through the text looking for examples and relevant information until such time as I could properly anchor the problem to things I did understand. Then I'd reverse course, and start working forward (in other words, trying to solve the problem) until I got stuck, at which point I'd reassess things and start working backwards again. Eventually, I'd come to grips with what the problem was about and be able to solve it (and, in the process, understand how to solve an entire class of related problems). At no point in this process did I ever try to memorize formula or solution techniques (actually, for my undergrad level courses, I often tended to re-derive the necessary formula in the margins of the test if they weren't already given to us).
As for studying for tests, I didn't. (As I said, I was pretty much the example of lazy, unmotivated student.) If I didn't understand something after going through my process for solving problems, I was unlikely to come to a new understanding by cramming the night before. The only test I ever really made any concerted effort to study for was quals; my study habits there were to work through copies of past tests so that I knew what to expect, and then prior to each exam refresh myself on all of the relevant concepts. (I'll admit that I did some memorization of formula here, but that's primarily because, one, there was so much to cover, and two, I already understood the material, I just needed to refresh myself about it so that I had it ready come test time.)
The one thing I find interesting about this is that the process I used to solve problems as a student is the same process I still use today when working through papers and trying to understand someone else's research.