In practice, it comes up short in several ways.
TLDR - For some years now, I use a system called Agile Results . It's a method (with less marketing behind it than GTD) which has been gaining traction for a lot of good reasons. I couldn't be happier with it.
I won't get into the details, but its biggest edge against GTD is the flexibility.
With Agile Results, you can let go for a couple of hours or days, and the system doesn't fall apart, it's more organic.
It's oriented towards Results in several domains of life, in a balanced way. The manner in which it breaks down the hierarchy of projects, temporal horizons and relative importance of tasks is the real key.
It solves the same problems as GTD (eg, your mind is for thinking not remembering [of course, you can still incorporate spaced repetition for what you want to remember long term]).
But it solves them in a way which is more organic, focused and iterative. If you only implement a portion of it, it has the proportional benefits - it's not all or nothing.
It also lets you integrate parts of other productivity systems.
There's a book about it , and a 30 day program to getting started incrementally .
I realize it sounds like hyperbole, but, after some years using it, I consider the problem of productivity essentially solved.
I prefer the concept of Monday (sometimes Sunday night) for planning and prioritizing my week. And a Friday review (or postmortem for the week).
There's some good stuff over at Scott Hanselmans's blog 
Also, this concept of three items and a flow is discussed in the following, "Getting Results the Agile Way" book 
Get dozens of book recommendations delivered straight to your inbox every Thursday.