You have to treat xsl:for-each as if all the items in the input are processed in parallel rather than sequentially. If you think of it that way, it's immediately obvious that "exiting the loop" isn't a concept that makes sense.
There are several ways you can process all the items in a sequence up to the first one that satisfies some condition. The most elegant way is recursion: write a template or function that processes the first in the sequence and then calls itself to process the rest of the sequence, exiting when the condition is satisfied. If the items are sibling nodes in document order, you can find the first one F that satisfies the condition, and then do xsl:for-each select="$seq[. << $F]" (in 2.0) or $F/preceding-sibling::* (in 1.0).
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference