Mage::getSingleton()
Mage::getSingleton() will first check the same class instance is exits or not in memory. If the instance is created then it will return the same object from memory.
$product1 = Mage::getSingleton('catalog/product');
$product2 = Mage::getSingleton('catalog/product');
$product1 and $product2 both will share same memory of OS and return only one instance each time.
Mage::getgetModel()
Mage::getModel() will create a new instance of an object each time even such object exists in configuration.
$product1 = Mage::getModel('catalog/product');
$product2 = Mage::getModel('catalog/product');
$product1 and $product2 both have different instant of same object and also occupy different memory .