The 2014 Winter Olympics in Sochi, Russia has already run into its fair share of controversy, most of it surrounding a series of laws introduced in the country. The laws are essentially a restriction of the communication of the country's lesbian, gay, bisexual and transgendered, or LGBT, community, as they are a restriction of "propaganda" targeted at minors. This essentially means that any talk of LGBT rights is going to be prohibited in the country, as was highlighted when four Dutch tourists were arrested for talking about LGBT rights, charged under a law against spreading "propaganda of nontraditional relationships among the under-aged."
Some groups are calling for a boycott as a result, but I don't think that it would be a very effective way to deal with the problem. The reason is that by enacting a boycott, the visibility of the issues is not going to actually increase over the course of the event. The goal should instead be find ways to protest the law within the event, because of the visibility that it will give to the act.
When athletes protest, it is seen, and it is remembered, and that's something which has been missed by most of the people calling for a boycott. Their heart is in the right place, and they know that with fewer athletes and less competition, people will be less inclined to watch the Sochi games. As a result, the games will likely be less successful and Russia would be effectively punished. In effect, a boycott would make the games worse as a sporting event.
However, it's also completely discarding an opportunity to bring Russia's problems to greater international attention. If Canada boycotts the games, for example, that's an international audience that simply won't be watching for the majority of the event. It's also a group of athletes that will be robbed not only of the event they have trained their entire life to participate in, but also the opportunity to let their voice be heard on the issue, in front of everyone, including Russia.
It could be a simple thing, like a change in the clothing worn for events, or just mentioning it in interviews. Something that would force the announcers from around the world to acknowledge and discuss the issues in Russia. It would even force many of the Russian announcers to discuss the issue, which would otherwise be completely ignored, since they can't just ignore people who aren't there. It's more powerful to take the platform Russia provides, and then use it, than to just ignore the country and hope for the best.
I understand that many people don't want to be seen as endorsing Russia due to these laws, and if an individual athlete would feel uncomfortable competing in the 2014 games I would understand it completely. But a boycott is a statement that does not actually help anyone. It registers disapproval, but it is a disapproval that is easily ignored and swept away, and it encourages more people to ignore the issues rather than confront them head on. To compete in the Sochi games is not to approve of the country that hosts them, but instead a way to get international attention. With the world's eyes on them, athletes have the power to make a statement, and history has proven that a highly visible protest has more power than walking away.