How to control Block revisions before being published?
I would use the Bean module for this. Here is a quote about its project page:


  Think of a Bean as a method to provide new types (compared to node this would be a content type) which then provides an add content interface to create as many blocks as you require (see screenshot below). The bean content can then be placed around the site just like any other block.


The Bean module also works great in combination with the UUID and UUID Features Integration modules. On top of that, after you become familiar with the Bean module, you might find other cases in your site where you also want to use the Bean module.

Moreover, by using Beans (i.e. entities), you qualify also for considering the Content Publishing System module (CPS for short) ... from commonly known "merlinofchaos". Here is an excerpt from that project page:


  ... CPS is a radical way of handling revisions for entities. It takes total control over revision management for all supported entities. For CPS-enabled entities, the revision tab is completely replaced and users are not allowed to manually create or move around revisions.


The video tutorial Drupal Bean module tutorial - using Bean Admin UI provides a great introduction to really understand the power of this module, and the kind of things you can do with it (by only using site building techniques, no custom coding involved). It also shows how the Bean module transforms Drupal blocks into fieldable entities.

A few more interesting issues related to all this:


bean workflow (published-deploy, unpublished-nodeploy)
Bean revision workflow support?