This is kind of a tough issue and I am, really, not an expert on getting places on time :-) … but…
There is at least a certain amount of predictability to traffic, of course, but there’s no way to be absolutely certain; just no way. Morning, evening and even lunchtime traffic is somewhat predictable. Seasonal traffic is somewhat predictable. I live in the Land of a Thousand Malls in a state with no sales tax so in Christmas shopping season I know there is going to be traffic everywhere and also, a 2 hour trip to the beach, on a Wednesday in December is going to be a 6 hour trip to the beach on a Friday afternoon in the summer.
Just last week, a Friday afternoon, I had to run an errand and left early to give myself plenty of time for rush hour traffic, only to find that everyone in town seemed to have left work early. It was a beautiful, spring Friday afternoon and there was no traffic all.
As others have mentioned, I don’t think you should have to take in to account the worst case traffic scenarios every time. I don’t think anyone always leaves themselves 3 hours to make a 45 minute trip just because it can, occasionally, take 3 hours.
Just try, if you can, to get a sense of what the traffic might be like and keep your cell handy, as mentioned, if it looks like you are going to be late. Unless the traffic in your area is completely random and unpredictable and you want to make sure that you are absolutely, never late, I’m not sure what else you can do other than leave yourself the 3 hours, which seems excessive and a waste of your time.