I've been experimenting with different ways to do this for a number of years now, since I'm temperamentally quite susceptible to tunnel-vision/completionism of the kind you describe. Assorted thoughts below.
GTD is a great way to manage your to-do list and make sure you don't miss stuff, and I definitely recommend implementing it or something like it. But I find it a bit lacklustre for actually deciding what tasks to execute on on a given day. The same is true for quite a few task-management systems.
One system I've found effective for breaking through ugh fields and focusing on what's important is Final Version Perfected. Eisenhower matrices (or at least the concepts underlying them) can also be useful. Timeboxing can help too – I recommend Complice's pomodoro timer for this, though if you overuse that it can lose its force somewhat.
If you can, having regular check-ins with another human to describe how you're planning to spend your time can be quite effective – it's harder to rationalise time-wasting activities to another person than to yourself.
Finally, an important prerequisite for doing what's important is having some idea of what's important in the first place. For that, some kind of Weekly Review system is extremely valuable – mine is currently a mashup of GTD's system, Complice's built-in reviews, and various personal modifications that have built up over the years.