Boycotting doesn't work because it's too passive. If you aren't going to take an active role in protesting something, you aren't going to make a difference. I'm tired of these lazy opinionated people who fool thememselves into thinking that they are being part of the change, while watching active people do all the work.

The only way to make a significant difference is to be active in your protest: Support organizations and write government officials. Put up signs. Make and sell T-shirts. Be persuasively creative.

I know that boycotting has been effective in the past, but it works only if at least a significant double-digit percentage of the population will faithfully follow through. If you can't expect to get these kinds of numbers (think 30-50 million people in the USA), you are much better off getting your message out by other (active) means. These companies have enough power that single-digit dips in their sales for a few months do no more damage than an occasional bad marketing campaign.

So if you really to see something done, get up off your ass and do something. Don't wait around for someone else to do it, because they won't!