I'm the same. I occasionally spend the whole day doing fuck all and then suddenly realise DH will be home from work in half an hour and I've wasted the ENTIRE day, and have a mad half hour tidying up and bunging laundry in. (Not that I'm remotely worried about DH's reaction, more that I'm annoyed with myself).
The only thing I've found that actually works, is that when I've a day (or even just a morning or afternoon) at home, I decide ahead of time that I'm going to do a particular room, and set an alarm for the time I'm going to start it. When that goes off, I GET UP AND GO TO THE ROOM. It makes a massive difference to just move your body in response to the alarm (and I use the same alarm that I have in the mornings, so I'm sort of pre-programmed to get up when it goes off).
Then my tactic is: set a timer for 15 minutes, on repeat.
First 15: Do everything at eye level or above - whisk a duster around for cobwebs, straighten pictures, wipe cupboards, tidy shelves, whatever suits that room.
Second 15: Do everything at waist level - countertops, or tables, or sideboards. Tidy or dust or put away.
Third 15: Above ground: tidy or put away toys, pick up clothes and shoes, straighten furniture.
Fourth 15: Mop or hoover.
Then make a cuppa.
Honestly, it works. If it's a real mess it won't make a massive difference, but it really works.