I don't know of any software that can do that. You need to force yourself to focus. Give yourself breaks, and rewards. Set a timer if you have to. For every hour that you work without distracting yourself, give yourself a reward of fun distractions. Take breaks in between work "sessions", so it doesn't seem as daunting.
Kat is quite right! In order to get things done, its a matter of focus: I believe that your work area must be as free as possible of distractions, just as it would be if you were working on homework for a school class or project. Get organized, and have everything you need close by, and within easy reach, and make sure that you are ready to work when you sit down. For each hour you work, give yourself a break away from your machine, or you may get tired. Get up and walk around and after a while, go back to your task.
For big tasks, split them up into smaller chunks: When I do websites, for example, I may set up the design layout one day, then actually set up the directories for the site another, then do the pages the third. Write things down, so you don't forget what it is you have to do, and for each goal you reach, check it off your list, and make notes of what you need to do the next day. This helps me with insuring that everything gets done.
When I used to work for the State, I had a supervisor that would remind me to take a break because my job was to do data entry for them. I would get going, and not stop, so the supervisor would make me take a break for the first few days, so that I would get used to doing it every hour. After awhile, it was automatic, and I was "trained" to do this.