Here’s how I like to think about it: Every object emits a habit field. When we sit down at the desk in our office to work, we shape its habit field into a productive one. When we sit down in a lounge chair to watch our favorite TV program, we nudge the chair’s habit field toward relaxation and consumption. The more we repeat the same activity around an object, the stronger its habit field gets. And the stronger its habit field gets, the easier it is for us to effortlessly fall into that mode of behavior the next time we’re around the object.
Even before I got to the practical “Barriers to access” section, I was thinking how I might intentionally inform my own habits. Inform as in mold, anyway—I've already been trying RescueTime for a few weeks as a self-analysis tool (though now that I look at the dashboard a few minutes, I agree it is such a double-edged sink not only for tweakability but simply for its unactionable chart porn). What I'd rather have is a tool that classes tasks for utility as RescueTime does, but instead of whinging about it, instead actively makes it hard to switch to less productive contexts by adding latency to the app switch.
That's an explicit solution for the thing I hate finding myself doing when demotivated: walking a ring buffer of activity stream checking. In that case, switching to the next unproductive app would tack on a lump of extra deciseconds, cuing me subtly to keep on task. Time spent in the “productive” apps would bleed the latency back away.
I can't imagine you can delay switching between web sites as easily as RescueTime records it, so it's not like I could have that anywhen soon, but likely as not there's some similar clever way to make the software workspace afford a productive habit.