Лучшее, что вы можете сделать - написать собственного наблюдателя, который вызывается до / после события add_to_cart. (Подробнее об этом здесь )
Внутри этого файла наблюдателя лучше всего получить все предыдущие заказы этого конкретного клиента:
$orderCollection = Mage::getModel('sales/order')->getCollection();
$customer_orders = $orderCollection->getSelect()->where('e.customer_id =CUSTOMER_ID_GOES_HERE');
По каждому заказу этого клиента вы перебираете все заказанные товары, и если один из них соответствует товару:
$order = Mage::getModel('sales/order')->load($order_id);
$items = $order->getAllItems();
foreach ($items as $itemId => $item)
{
if($item->getProductId() == ordered_product_id_goes_here){
//Show output message here that customer can only buy this once
}
break;
}
Удачи;)