I came up with a technique for my whiteboard that is working really well for me:
I have a list of the major tasks that still need doing, the ones that would take more than a day to complete. Right next to it on the same whiteboard, I put a list of little things that I would like to complete today. Every morning when you're ready to get to work, you mentally decompose the big items into a handful of next actions and put them on your TODAY list. Ask yourself the following question: "What is the list of accomplishments that I could truly feel good about having finished by the end of the day?" Like you, I am easily distracted, but now when I catch myself being swallowed by NetNewsWire (thanks Brent!) or http://developer.apple.com/documentation/, I just turn my head a few degrees and look at my list. Then I latch onto something and grind through it.
It has been really important for me to have this list on a whiteboard staring me in the face. I have tried Trac and some other software tools, but I find it's far too easy to drop a ticket into the system and let it languish indefinitely. Physically crossing things off feels good, especially the big ticket items.
I have read David Allen's "Getting Things Done," and I recommend it highly. You can get a lot out of it even if you don't implement the full system, which requires a ton of discipline, and I haven't ventured that far yet. The book reinforces a lot of ideas that weren't new to me, but what was new to me was the idea that we can free ourselves from the nagging and stressful voice inside our heads that is constantly inducing us to panic because the library books are overdue and the gutters are clogged and the car needs an oil change and your son's 2nd birthday is in two weeks and on and on. I have always taken this voice for granted, a necessary evil of complicated times. The prospect of gaining back all the energy you waste worrying about 150 things at once is truly liberating.