Congress should pass a law saying that H1-B's must be paid identically with American citizens of equal skill grades. That would really throw water on companies now clamoring for more visas. All they want to do is undermine American workers' wages. IF they want to do that, then outsource. Otherwise we should tax their ass.
Law is already there. U.S. employers must pay the prevailing wage for the profession in question. However, since many people, in the late 90's, saw how lucrative IT work was, more people entered the IT workforce and pushed wages down. The collapse of the tech bubble added to downward pressure on IT wages. The reason IT workers are paid less is that there is a larger pool to choose from. H1B's didn't drive down IT wages, rather IT wages dropped because there is a surplus of IT workers looking for employment. If unemployed American IT workers turns down work because it doesn't pay nearly as much as his last job, then, technically, no American IT workers are available at the prevailing wage and the immigration law is satisfied. Cutting the number of H1B's won't raise wages or increase employment for native workers if the workers will not accept the prevailing wage.
Also, H1Bs are used many other areas like health sciences. Nurses can get an H1B immediately due to a severe shortage in the U.S. Also, academic and non-profit H1Bs have no cap at all.