The real problem with the H1-B visa is that it doesn't make it easy enough to move from a H1-B to a green card. Think about it out of the person born in the US how many of them don't have the skills to become technically competent engineers or came from in bad school system or become criminals. So for every US born person who becomes a competent engineer thousands if not millions of tax dollars have been spent on people who end up on welfare, in prison, philosophy majors or worse, bankers.
Getting the best and brightest from around the world is a good deal, these are people who very rarely become criminals and are often risk takers (they did choose to leave their home country after all) who are more entrepreneurial. Look at the owners of the top tech companies, ever notice that a high percentage of them were not born in the US. If there have been abuses, focus on the abusers but simultaneously make immigration and green cards easier for the H1-Bs that do work out. Many posters have pointed out that many H1-B holders a very mediocre, that has not been my experience (I am not in IT) but look around and I think you will find simply that most candidates are mediocre.
Canada supports a much higher rate of immigration for skilled workers (a much lower rate for unskilled, undocumented workers) and has avoided the current economic depression for the most part and is now beating the US on pretty much every per ca-pita economic metric. So I can't see any evidence that skilled immigrants steal jobs. Eliminating the H1-B program would just accelerate the decline of the US economy and force innovation to happen elsewhere.
The bigger the theory the better.