How to prevent a cloth from entering another mesh?
Blender cloth sim are perfect for dropping tablecloths onto tables, they rarely work well for shirts (although they will work for skirts).

That said, if you have it working, more or less, here are some tips for better shirt sims:


Under collision, enable Self Collision, this will try and help with the cloth hitting itself. 
Lower all the distance settings way down, including collision.
Your shirt mesh density and topology will have a huge impact. In general, an all quad mesh with nice flowing loops works best. There is a sweet spot in terms of mesh density, ballpark for a shirt the arm loops should have 8-12 vertices. Any more and the sim may tend to crumble. 
Sometimes you want subsurf above the sim and sometimes below it, for low poly shirts you want it above.  And make sure the viewport/render levels are the same.


For convincing shirt stretches, you usually apply the simple sim, and use multi-res sculpting for the folds.