Since we are all using version control these days, or should be, then perhaps it is time for a development process that sits before TDD or whatever process you generally like to do.
I am calling it Commit Driven Development.
So the normal process is you write your code, you test it, build it, etc and then you think about committing it, if you are anything like me then the commit message will be build up of things you remember as you look through the files currently sitting in the staging area. This is probably a little backward by today's standards.
What if instead we start by writing our commit message, a succinct note of what we want our next chuck of development to accomplish and we work on that until the commit message captures what we have in our code.
As well as helping us plan our time a little better, I would imagine that doing this will help focus our development, because doing anything outside of that commit message would not longer make sense and we would (hopefully) get away from doing it.