The Supreme Court has overturned parts of McCain-Feingold, the law that restricted speech by organizations, including nonprofits. From the majority opinion:
The law before us is an outright ban, backed by criminal sanctions. Section 441b makes it a felony for all corporations — including nonprofit advocacy corporations — either to expressly advocate the election or defeat of candidates or to broadcast electioneering communications within 30 days of a primary election and 60 days of a general election. Thus, the following acts would all be felonies under §441b: The Sierra Club runs an ad, within the crucial phase of 60 days before the general election, that exhorts the public to disapprove of a Congressman who favors logging in national forests; the National Rifle Association publishes a book urging the public to vote for the challenger because the incumbent U. S. Senator supports a handgun ban; and the American Civil Liberties Union creates a Web site telling the public to vote for a Presidential candidate in light of that candidate’s defense of free speech. These prohibitions are classic examples of censorship.
The real problem, however, is that McCain-Feingold is a classic example of passing a law to fix a problem that the government created by passing too many laws. It's a faulty stop-gap for the problem that no one wants to address—that the federal government has unlimited power to put people out of business. Weak businesses know they can bring their stronger competitors down via regulation, unions, and antitrust laws, so they are willing to spend a lot of money to make it happen. If their stronger competitors have any sense, they ante up as well to prevent getting shut down. All of that is corruption, plain and simple.
The simple way to stop corruption is to kill it at its source: by eliminating the agencies and laws that companies use to beat up their competitors. Businesses have no incentive to lobby and bribe powerless regulators and politicians, so they won't.
The complicated way to stop corruption is to attempt to control how groups of people (e.g., shareholders and private donors) spend their money. Conveniently, this also increases the size and power of the government.
John McCain, Russ Feingold, and most of congress preferred the complicated way.
Ironically, as long as McCain-Feingold was in place, it contributed to the corruption problem. Corporations could tattle on their competitors who weren't following it correctly, thereby getting them fined or worse. Or, corporations could, via the lobbyist system, spend money to keep McCain-Feingold enforcers off their backs.
Repealing this law would be an especially good first step if the second step (repealing antitrust laws) and third step (gutting union laws, OSHA, the EPA, and others) were on the horizon, but that's unlikely. As it stands, there's now one fewer law on the books, it's slightly easier for corporations to influence elections (more straightforward, at least), and it's much easier for nonprofits to support their candidates near election time. To me that comes out to a net positive, but not much to get excited about.