The stage module taps into Drupal's revision system to allow host-based staging of content stored in the database. For content types specified in the admin section, new content or edits to content are stored as revisions, but the node itself retains its current revision until an administrator pushes the content (also in the admin section). A set of changes between pushes is grouped and pushed all at once, and the change set is named upon push. The list of revisions associated with a given change set can be viewed both before and after a push.
This will work only in a limited fashion with CCK or custom nodes because these types can perform operations outside the normal revision system's scope. I'm considering adding a nodeapi hook that custom module developers can tap into for handling custom staging tasks (e.g. writing to non-core tables).