I think a compo based upon deadlines is a good idea. Though making the deadlines a bit more loose could be achieved as such:

Stage 1 (1 week): Define project scope and future checkpoints
Stage 2 (2 weeks): as defined by team (this could be engine, or graphics, or whatever)
Stage 3 (2 weeks): show some progress
Stage 4 (2 weeks): Show an almost complete game (only needs spit and polish)
Stage 5 (1 week): Final game

Each stage entry should have a quick progress report attached with it.

This gives the best of both worlds. Deadlines that allow the team to setup goals, this is actually how it works in the real world. The client says I want to see progress every X days/weeks/months and the team produces progress reports with a Demo where applicable.