Use soft-scheduled time. Iterations are based solely on story-load with respect to velocity.
Iterations are complete when all stories are complete.
If an iteration seems to be taking too long, that's when we break up stories. Our release and iteration planning usually happens when we can get two or three people together to create the plan. Usually this plan can then be reviewed by more people over the day or next day. Virtual Pair Programming was tried and found to be very useful and effective, but the drawback is finding any two developers with overlapping schedules. We're developing in multiple languages simulutaneously.