The policy at our work goes like this (multi-developer team working on object oriented framework):
Update from SVN every day to get the previous day's changes
Commit daily so if you are sick or absent next day(s) someone else can easily take over from where you left off.
Don't commit code that breaks anything, since that will impact the other developers.
Work on small chunks and commit daily WITH MEANINGFUL COMMENTS!
As a team: Keep a Development branch, then move pre-release code (for QA) into a Production branch. This branch should only ever have fully working code.