The best thing you can do to be a great SharePoint developer is to become a top-notch ASP.Net Web Forms developer. That includes HTML/CSS, the page/custom control event lifecycle, JavaScript, XML/XSL, and everything else that goes into a web app. Once you feel you've got that down, moving over to SharePoint wouldn't be too much of a leap. MOSS 2007 & SharePoint Server 2010 are both, at their roots, just very complex ASP.Net applications (v2.0 and v3.5, respectively).
The next thing to do would be to really learn SharePoint as a power user. Get familiar with all the different parts of SharePoint and how they interact - not just web parts, but all the different site settings (at least at the site collection level, if not central admin), how the publishing functionality works, how workflows integrate with SharePoint and where, lists, libraries, site columns, content types, etc.
Once you're comfortable with how to use SharePoint, and have learned all the vocabulary for everything and how they interact in the UI, then dive into the object model. I highly recommend using the WSPBuilder add-in for Visual Studio as opposed to the Microsoft add-in. Why? Microsoft hides too much of how features/WSP packages are actually built, and makes it much harder for a new developer to put it all together. WSPBuilder puts all that logic right into the structure of your project, and makes it lots easier to see how things are coming together.
At that point, it's a matter of keeping your eye on what to call Dispose on & not - download the SPDisposeCheck tool to help you out with that. Always remember to treat the SQL server as a black box, and take a day to learn rudimentary CAML queries - then you can hate CAML like the rest of us. :)
Other sources: