I taught a workshop about transitioning to Agile earlier this week. One of the things that's difficult for many project managers to recognize is that milestones must be deliverables--otherwise, it's too hard to know when something is done.Many early practitioners of agile methods are confused by the concept of an iteration, because it almost seems like an arbitrary increment in a project. At any point in a project, we can take a snapshot of everything and call it the end of an iteration. Johanna points out, succinctly, that iterations should be oriented around deliverables.
One of the participants had a slightly puzzled look on his face when I said that, so I'm not now thinking that another way to think about milestones is to call them handoffs. If everyone has the idea that their milestone is really a handoff to someone else in the project, you're more likely to get to "done" for a milestone.
The most valuable deliverables will in general be those that exercise risks - usually requirements or architectural risks. If your team can deliver a fledgling version of the product to testers and prospective customers, you can determine how much progress the team is making in addressing these risks.