There's another solution that works even when n different people have different ideas of what 1/nth of the whole is. One person is chosen randomly to start, and takes out for himself what he considers to be 1/nth of the whole. If someone thinks that what he took out was more than 1/nth, that person removes some from what the first person thought was 1/nth (he thought it was bigger than 1/nth, right?), and claims the rest for himself. We repeat this challenge process until everyone agrees that this is at most 1/nth, and we recursively divide the rest of the whole among n-1 people.

To adapt this to cutting a cake, instead of actually cutting out 1/nth of the cake, we just indicate where the cut would go, and others make the indicated cut smaller as appropriate. This avoids passing around slivers of cake (thanks mblase). Really, this algorithm is best suited for dividing many discrete items among a few people.