I personally use an online service insweb.com to shop yearly for insurance. If I don't like the price it gives me, I will start calling around to the local and well known insurance carriers. But last year, insweb saved me over $200 a year on my family's car insurance. More if you consider that my previous insurer, State Farm, raised my rates by about $100 a year for no reason at all. As far as I can tell, insurance companies are no longer rewarding their long term customers.
I suppose it makes sense. The longer I stay with one company, the more likely I am (statistically) to file a claim. By raising my rates after a few years of paying into my policy, they encourage me to go elsewhere and eliminate their risk.
You should shop for insurance once a year. Twice a year might be pushing it, I personally don't want to deal with changing companies every six months. That's why insweb is a great tool. I can take 10 minutes out of my day once every year, input my info, and see if I can cut my rate significantly. If not, and if my current rate has not been increased, I stay.
Don't forget to shop around for home owner's insurance as well as auto. Life insurance is different because typically you are locked into your rate for the life of your policy, 20 or 30 years.
Shopping for insurance should be an annual event, like filing your taxes. Not doing it is just throwing money away.
Tip: Sign up with insweb with a secondary email address, as you will get quite a bit of mail from them.