I have a number of things to say so I'm going to attempt to make this as brief as possible, but this is a complex topic so I apologize if this gets lengthy.
Before I begin: It is extremely unlikely that employers are "discriminating" by indicating that they want good written and verbal communication skills. While there may be some people out there doing that, it's honestly pretty ridiculous to imply that it's discrimination and I'll explain why in a moment.
Ok, so let's break this down a bit and look at a few factors I think you're overlooking:
1) Being a native speaker or fluent in a language has almost nothing to do with being able to communicate effectively. I know plenty of incredibly intelligent, native English-speaking people who can't clearly and concisely convey an idea to someone with a lower-level understanding. Which brings me to my next point...
2) Just because a job isn't a sales/customer-facing position doesn't mean the ability to communicate is less important. There are multiple facets of communication and being able to speak to strangers and empathize with people (sales) has basically nothing to do with being able to convey ideas and concepts effectively.
One of the most critical aspects of a software development position is the ability to work with team members, analysts and customers to identify and resolve issues. If you can't explain technical information or relate concerns effectively then you're going to waste valuable time re-discussing or even worse re-developing things because there was a lack of communication.
3) Frankly, I think IT is one of the most diverse fields you could discuss and that out of all the possible things you could complain about discrimination shouldn't be very high on the list. I've worked with people of all genders and nationalities, both in person and through online collaboration. If anything the stereotypical Asian/Indian engineer you often see in media/advertising is an indication that discrimination isn't a major issue.
As for your experience with interviewing:
I think that you're attempting to rationalize to yourself why you weren't selected, and if I had to guess I'd say it's because you're either overestimating the relative strength of your qualifications or your resume isn't doing a good job of highlighting why you're a strong candidate for the positions.
As another poster said: you're not being passed over for having a foreign sounding name in a field where a TON of companies are outsourcing IT services overseas and everywhere you look in the online community are developers of all races and nationalities. That's what I meant when I said it was a little ridiculous to imply, because I don't think you could pick another field that's as diverse or forward-thinking.
I would suggest that you try to keep an open mind about things and not be too quick to dismiss the importance of them. IT is a good field to be in, but just like a college education... it's not a magic bullet. There has been tremendous job growth over the past 20 years, but there has also been an explosion of people getting educated in the field. Some people seem to think you can't look without bumping into countless opportunities, but that just isn't realistic.
The point I'm driving at here is you still need to differentiate yourself from other candidates, and the number one thing for many companies is your ability to communicate. I'm currently a software developer, but I spent a decade working in sales/management and if I were hiring today I would MUCH rather an average programmer with excellent communication skills and a good attitude than a "rockstar" programmer with middling communication and a bad attitude.