I know this is less programming related and more time management related, but I value the feedback of the users on this site. I\'m finding myself particularly busy this semester
I was in almost the same situation you are about 6 months ago. I was overwhelmed with keeping track of my projects and tasks and needed something that would enable me to track projects, the subtasks involved, and my progress on them. I also needed something that would let me collaborate with others as necessary and that was customizable.
I'm a developer, so I knew that SVN was a must. I wanted a PM system that integrated with SVN and would have preferred it to be self-hosted. I started out with Fogbugz on Demand just to give it a try, but it was overkill for my needs and I never felt like I was using it as I should have. Don't get me wrong, the system is beautifully constructed and is better than most PM tools out there, but it wasn't for me.
After trying a bunch of other options, I finally decided on Redmine. It is a PM system built on Ruby on Rails and it is flexible, decent looking, and reasonably fast. It will auto-create SVN repositories for each project you create (if you set it up appropriately) and does Gantt charting for you. Redmine as a PM system for tracking projects and tasks is amazing. The only thing I didn't like was it's lack of a timing system. There is manual time entry, but I wanted a widget to click like a stopwatch to track my time.
I decided to use Harvest as my time tracking solution. They have widgets available for Windows Vista and OS X that make it easy to stay on top of tracking your time. You'll have to set up your projects and clients (sounds like your client is yourself, so you won't have many) in Harvest, but after that you should be good to go. They have a phenomenal set of reports that you can view at any time to see where you're spending your time.
So, that's pretty much it. I use Redmine + Harvest pretty much every day and I haven't been happier.