I have used canonical tags on thousands of pages to pull dupes out of the SERPs, and they have worked perfectly!
The dupes were product or category pages, sometimes our fault, sometimes the fault of other webmasters linking to us, but the net result was we were able to normalize thousands and thousands of URLs this way. I prefer server-side 301s, but sometimes you cannot predict who will do what out there. ;) In fact, we even have instances of googlebot dreaming up URLs to see if they will resolve, and we can use canonical to intercept them all and make sure we don't have a big dupe content problem developing unbeknownst to us. With a canonical in place, it doesn't matter what URL is used to get to that page, it will normalize into the preferred URL. With canonicals, nothing can slip through the cracks.
Canonicals have worked EXACTLY as google promised, for us. I was a little surprised, but they really do work OK.