you have probably tried all these but I know figuring out 'why is the product not showing' is a frustrating process.
My advice is try making a similar product manually in the Magento admin area and then check all the fields in the admin area for each product. You might look at setting 'website_ids' closely and I think store_id and website_id are different things, no? $store_id = Mage::app()->getStore()->getStoreId();
vs $store_website_id = Mage::app()->getStore()->getWebsiteId();
You could also use the system->import/export export tool to compare what Magento has set vs what your algorithm is setting.
Are you reading the Magento AdminHTML functions for product saving?
/* path: app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php */
Mage_Adminhtml_Catalog_ProductController::saveAction()
// (and then obviously)
Mage_Adminhtml_Catalog_ProductController::_initProductSave()
Mage_Adminhtml_Catalog_ProductController::_initProduct()
So looking at that code, if you can capture the POST from the Magento Admin when you click the save button when you manually make your test product then you will be able to see what is being 'passed in' to the saveAction() function and compare that with your code.
Where do you run your code from? If you are instantiating your own Mage::app() I think you need to set it up as an admin session and set store ids and such. I can't find a reference to that but search around if you think that might be something to do with it. Maybe you can use a call to saveAction() or re-purpose that code rather than using $this->product->save().
If you have a test module for running arbitrary code, try some debug calls and echos from building different product collections to see what is the difference between your generated product and your manually entered test product.
Plan B : If you have an external product data source, you might find the most excellent 'MAGMI Datapump API' the simplest and quickest way to achieve what you want.
Was that too much information?