sales_order_place_before事件重定向

I would like on the event sales_order_place_before to make some custom verification and to cancel the placing of the order. What i have tried:

public function saleOrderPlaceBefore(Varien_Event_Observer $observer){
      if(!VerificationSuccess()){
            RemoveProduct();
            Mage::throwException(Mage::helper('sales')->__('Product has expired.'));
            //how to redirect after error?
      }
}

The problem with this approach is that the product is removed from the cart, but the error is shown as an alert box and i would like to redirect the user to some custom page.

After this, i tried directly to redirect to a custom page with something like:

 public function saleOrderPlaceBefore(Varien_Event_Observer $observer){
          if(!VerificationSuccess()){
                RemoveProduct();
                $session = Mage::getSingleton('checkout/session');      
                 $session->addError(Mage::helper('checkout')->__("Product expired!"));
                 Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('product-error'));
                 Mage::app()->getResponse()->sendResponse();
                 exit;
          }
    }

Using this code, i receive the error:

User Error: Some transactions have not been committed or rolled back  in PathToMagento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 4039

Any ideas on how to manage to cancel the placing of the order, remove the expired product and redirect from this observer(i can use other events also) to a custom page?