Making changes to data via pages/components but deferring applying changes till later

Usually, a Page or Component will affect the database, given the changes that the user makes. But if you had a situation where you wanted to defer those changes till later, say as part of a longer timeframe business process (for example, a moderation process), how could this be accomplished?
And if you want to be able to show someone the changes without applying them (say a second moderator), how could this be done?