First, if you want to have a team working on Mathematica code, then you really should do it properly and use [Wolfram Workbench][1]. As pointed out by [Leonid][2], notebooks are not the right tool for software development.
This said, I have used version control ([git][3]) with a notebook and successfully merged versions[.][4] To do it, I minimized the amount of metadata in the notebook by:
1. Turning off [Notebook History][5] (and clearing any existing history using the dialog)
2. Turning off the Notebook Cache (in the [option inspector][6]).
You can turn off both notebook options with with the single command
SetOptions[InputNotebook[],
PrivateNotebookOptions -> {"FileOutlineCache" -> False},
TrackCellChangeTimes -> False]
but clearing the existing notebook history (removing all of the `CellChangeTimes` cell options) is easiest using the provided dialog.
Outputs can be long and messy and normally don't want to be tracked by your VCS. Some input/ouput combinations I did want to keep, so I set the output cell option `GeneratedCell->False` and then both cells' options to make them non-deletable and non-editable. The rest of the output cells were removed using the [Delete All Output][7] menu option.
Finally, keep your notebook(s) well organised with sections and subsections so that work and changes are clearly localised, which will make possible merges easier.
[1]: http://www.wolfram.com/products/workbench/
[2]: http://mathematica.stackexchange.com/a/11289/34
[3]: http://en.wikipedia.org/wiki/Git_%28software%29
[4]: http://forums.wolfram.com/mathgroup/archive/2010/Oct/msg00140.html
[5]: http://reference.wolfram.com/mathematica/tutorial/NotebookHistoryDialog.html
[6]: http://reference.wolfram.com/mathematica/tutorial/OptionInspector.html
[7]: http://reference.wolfram.com/mathematica/ref/menuitem/DeleteAllOutput.html