In general, I'd say in any country, programming has two parts - how well you can write code, and how well you can fit into the team. The first is fairly absolute -- you can write code whether you are native to the country or not, and whether you speak great English or not. The second is incredibly subjective and team dependant, and even more dependant on the particular industry you want to work in.
Specifically answering the questions:
Am I going to have a much harder time finding a programming job in the U.S. than native Americans?
Depends on a lot of factors. If you were aiming for a job in defense contracting, you will have very little success if you don't have a US citizenship. In most other industries, a valid work visa is all that is required.
Then it depends on the team, and also their interview/hiring policies. If the team or company is smart, they are likely to be looking for someone who can communicate effectively using the company's preferred communication channels. Every company will have a different criteria, it's part of the personality of the company.
Are foreign programmers generally frowned upon by colleagues?
Not that I have seen. I work mostly in big companies.
I'll say that sometimes certain nationalities get stereotyped within a given corporate culture. But it varies from corporation to corporation, and I've always seen individuals be able to break through the stereotype.
How do less-than-perfect communication skills impact a career?
I've never seen a situation where a geek (ie, a programmer) was expected to have "perfect" communication skills. In fact, if your communication skills were too slick, you'd be in danger for being mistaken for sales and marketing. :)
I think geek culture permits a certain level of quirkiness including charming foreign accents and strange twists of grammer.
The one deal breaker would be an unwillingness to improve. Everyone (native or foriegn) has something they could do better in the communication department. Being willing to find and improve communication barriers is vital to moving forward in any career - technical or otherwise.
Will I have to deal with disrespect on a regular basis?
If you do, you are in a company that I would consider to be "broken". IF they hired you, they should be willing to give you a chance. If they aren't willing to give any employee a fair shot, then the company is broken and you should move on.
My big advice working in the US as a foreigner is to be aware of seemingly insignificant social norms that might be different between countries. Sometimes the very little things are what will get under people's skin and yet they won't talk about it. It may not necessarily be language - for example, time and lateness will tick some people off and different English speaking countries have a different threshold for lateness. In my company, 10 minutes late is "late", and at 15 minutes the other party has probably moved on to doing something else. For my Indian friends, 30 minutes is "late".