I have a similar probelm to Integrity constraint violation creating Product in Magento (unanswered) but I am creating a custom Observer that hooks into the catalog_product_s
In this case, I'd recommend not using the catalog_product_save_after event. Instead, try using catalog_product_prepare_save which is fired after the POST data is applied to the product, but before ->save() is called. That way you don't have to mess with with saving or that ugly $_singletonFlag!
Also, with catalog_product_prepare_save you get the HTTP Request object inside the Observer Event. No need for Mage::app()->getRequest(). Woot!