The problem is that, once you are in the US on a H-1B your life is in the hands of your employer. This is ripe for employee abuse (and one of the major contributors to wage depression in immigrant labor).
What the US really needs is a legitimized skilled labor immigration program. Something whose job is actually to steal talent from abroad and add it to America, instead of this "job shortage" excuse and subverting a different system to accomplish the same ends. If you can bring people into the country and give them employment mobility (the same way my parents came into Canada), the US would be far better off, and wage depression due to immigration would be reduced.
[edit] As a more concrete issue: here in Canada we have significant problems with skilled immigrants coming and not being able to find jobs, and thus being a drain on our social systems. This can easily avoided if certain classes (i.e. anyone not exceptionally talented) would need an employer sponsor to apply for immigration. You would need to secure a job before entering the US, but once you're in you are mobile.
I could set up a company that would, in exchange for buying $3000 of my plastic toys, hire someone and let them resign a month later. I can even let them do the month's work from their new home in the US. Then they can go off and do as they please.
Granted this is just an enforcement issue, and enforcement is part of whatever system we have, but I think you could save a lot of effort by just instituting some kind of entrance exam system to certify them as a 'knowledge worker'. (At which point they can enter and leave freely, with full job mobility.)
As an added bonus, you could administer this exam to citizens as well as a form of professional certification, which would probably be more useful to employers than the existing degree system.
There are ways to prevent that. For example, the government could require that (a) the employer sponsoring a new immigrant has to pay six months of the immigrant's unemployment insurance in advance (perhaps put into an escrow account), and (b) if the immigrant is neither employed nor collecting unemployment insurance for more than, say, two months, then the visa is terminated.
Another possibility I've seen floated is that the government make only a fixed number of work visas available, but auction them off. Then the immigrants let in would be the ones who are likely to add the most value to their employers.
H1-B program is very important to this country. It keeps us ahead of the curve by draining the talent worldwide and adding it to United States brain capital.