How can I increase my chances of being accepted to a top 20 MS CS program?
Realistically, do I have any chance of getting admitted in a top 10 or 20 program.


With a publication in an international conference?  Definitely!

Of course, I'm assuming that you mean a good publication in an internationally recognized conference (not just a conference with papers from more than one country), ideally indexed in DBLP and available over the web.  I'm also assuming that you will have strong recommendation letters describing your contributions to the paper, in specific, personal, and credible detail, as evidence of your research potential.  Ideally, your letters will make direct comparisons with other IIT graduates who have succeeded in strong graduate programs.

I'm also assuming that you have a compelling statement describing your research experience and interests, written in flawless English, and that those interests are a good fit for the faculty at your target departments.  Be sure to describe your ongoing open-source projects.  (The contest stuff?  Meh.)  As Daniel suggests, focus on the work you want to do, not the ranking of the department.

And of course, I do mean you have a chance, not that you have a sure thing.  Graduate admissions is a random process; you have some influence on the distribution, but someone else rolls the dice.  Machine learning is a particularly competitive area, so if you want to continue in that direction, you should apply broadly.  In particular, you should not limit yourself only to programs that appear at the top of some list in some stupid magazine.  Rather, aim yourself at departments whose faculty and students have similar research interests to your own.

(I regularly serve on the CS grad admissions committee at UIUC.)