I had the same problem that sdeutsch is talking about—I have probably used every to-do list app on planet earth, each of which I gave up on within a week. However, I made a point out of making good use of one, so I settled on Things. Whatever your GTD app (Things, OmniFocus, Mail, a legal pad), you need to have something to basically tell you what to do and when to do it. Trust me, I hate making big master plans at the beginning of a project since they’re not elastic, but I’m not talking about a rigid, structured taxonomy of every character of code you’re going to type into your text editor; you can make an intuitive order of events that is reasonable to you, the developer, and makes sense to you, the developer. I share my task list with my teammates, but I also fill it with lots of technobabble so this isn’t the same kind of list you’ll find in the project’s master plan.
I personally find it excruciating to hop from one project to the other, but unfortunately that’s the nature of the business. Make sure you leave good hints to yourself in your code, and if you use a version control system like Subversion, leave good hints in the logs. When I first started working as a web developer, I wasted a regrettable amount of time trying to pick up from something that I hadn’t worked on in a day or two. The more descriptive you are to yourself, the quicker you’ll be able to change gears and get your flow back on that project.
Just a few IDE tips: if you’re using something like Aptana Studio or NetBeans, in addition to a myriad of other environments, TODO comments are incredibly useful. Not only do they help you find your place and get re-oriented with the project, but if your company ever hires another developer, they can collaborate with you on those todos. NetBeans, for example, has a dialog along the bottom with a list of the TODO comments in the current document.
Waste as little time as possible on bullcrap: the phone, e-mail, interruptions, etc. You need to marshall off your time and attention as best you can, since your time on the job is very finite, and distractions like e-mail and other people interrupting is significantly more costly than the minute or two that it takes to respond to each. Contrary to popular belief, you generally do NOT need to answer e-mail as soon as it’s received. Do yourself a favor, and set your e-mail client to only check for new messages every 30 minutes, or longer if possible.
This is a very general tip and my not sound like a time management tip, but it is: make use of open source code and frameworks. The goal of these frameworks is to boost productivity, yes, but also, they allow the developer to only concern his- or herself with the abstract of the program. Frameworks like CakePHP, Django, Ruby on Rails, Zend, jQuery, etc, these are all productivity tools that will help you spend less time entrenched in the details, and more time focusing on how our application is going to behave, which keeps you focused.