I'll add yet another answer, because to me it seems some of the most important points haven't been mentioned.
My understanding with version control
is that its better to commit often,
because then you have history and the
ability to go back to previous changes
in a fine grained way.
I absolutely agree about this.
My understanding with Agile and
continuous build is that its there to
put pressure on the developers to
always have working code.
It is not there to put pressure on developers — I'd rather describe continuous integration as a friendly safety net that helps you catch problems as soon as you commit them, when fixing them is usually easy. (Check Martin Fowler's seminal article for more CI benefits.) It is important to always have working code, and that's where version control branches come in, as silky pointed out. But unlike the traditional scenario he describes (and what Fowler talks about: "Everyone Commits To the Mainline Every Day"), I'd recommend the opposite: have your main trunk stable, preferably always in releaseable shape, and do all major development in temporary working branches.
I've plugged the stable trunk approach on SO here and here; see those posts for some justification and experiences of this model. Also, I warmly recommend this article which influenced my thinking a lot: Version Control for Multiple Agile Teams by Henrik Kniberg.
Breaking the build in a dev branch is far from a taboo, although you should still try to keep everything compiling and all tests passing. Breaking the trunk build, in this scenario, is somewhat more serious, but still I wouldn't call it a taboo — these things happen from time to time, and instead of finding someone to blame, it is infinitely more important for the team to just fix it (and be happy that the problem was found now, instead of much later, perhaps by a customer).