Crossing arms may not necessarily mean detachment or rejection. However, more often than not, that's the usual implication. It can mean different things for different people and, furthermore, in different situations.
Some people cross arms to make themselves secure, perhaps when they are intellectually or physically overshadowed. Or maybe when they are pushed a little on the emotional front or on areas out of their comfort zone. In short, it may be their way of putting their guard up.
Others may conceive it as a deep and professional expression of taking interest in the conversation, often marked by the seriousness and context of the conversation. However on a contrasting ground, disinterest in the conversation is also a stimulus to crossing arms.
Crossing arms is also used as a sign to display prowess and as a challenge, in case the superiority of an individual is questioned.
Funnily enough, hiding the stain on the shirt seems a reasonable explanation too..:D