Because most voters think ad hominem is a valid argument, even if they won't admit to it.
Because ad hominem is sometimes a valid argument when someone's past performance, character, or motives are pertinent to the issue at hand. Attacking a politician for his past corruption and for skimming money into his offshore bank account might be a valid argument against re-electing him, assuming you can make such a claim safely and the vote is not rigged.
edit to add: I must admit I have distaste for most critical ad campaigns. I'm certainly not defending them with the paragraph above.
Yes, it's an argument against re-electing him. It's not an argument for electing the person making the ad.
That's the thing. Most elections tend toward a binary solution set, with only two realistic answers. Thus, if you can convince the public that they REALLY don't want candidate B in office, they will vote for candidate A to ensure that B doesn't get the spot. Candidates C,D,E,F rarely are even considered.
Such is life in the US - other smaller parties, like the Greens, are often just there to fill up the ballot and to give people the impression that they have a choice. This is because it requires untold sums of money just to win a state through advertising, which other smaller parties don't have. People are unlikely to donate to a newly-formed and uncertain party which matches their views, because they view it as a "waste of money'", given that the party does not have a chance of winning. This creates a vicious circle which keeps the two major parties in power, because they have literally no opposition except for each other.
The system also has the side effect of creating a vast majority of "moderate" voters, who will vote for one side or another depending on which side happens to support their viewpoint for now. This in turn means that it is more effective for one of the major parties to convince the voters that the other side wouldn't help them, rather than expound on how their own side will help. In effect, people vote for candidates because the other guy told them that that candidate wouldn't help, rather than how he himself would help.
tl;dr : it's easier to say "That guy can't help because..." over "I will help by..."