Yes I could ... but then I'd have to kill you ... 
This took me a bit to work out what I think is the best solution ...
1 if not logged in and this is one of the Free Products, the customer is told to login ...
2 if logged in the orders are checked to see if the customer has already obtained the product ...
You can customize the function file:
/includes/functions/functions_general.php
and around line 1144 change it to read:
Code:
default:
$return_button = $link;
break;
}
// bof: do not allow customer to add to cart if already purchased
// if not logged in and a free product make login
if (!$_SESSION['customer_id'] && zen_get_products_category_id($product_id) == 60) {
return 'login for free product';
}
if (zen_get_products_category_id($product_id) == 60) {
$chk_product_purchased_query = "select distinct op.products_id, o.orders_id
from " . TABLE_ORDERS_PRODUCTS . " op
left join " . TABLE_ORDERS . " o on o.orders_id = op.orders_id
where op.products_id = '". (int)$product_id . "'
and o.customers_id='" . $_SESSION['customer_id'] . "'";
$chk_product_purchased = $db->Execute($chk_product_purchased_query);
if (!$chk_product_purchased->EOF) {
return 'too bad so sad';
}
}
// eof: do not allow customer to add to cart if already purchased
if ($return_button != $link and $additional_link != false) {
return $additional_link . '<br />' . $return_button;
} else {
return $return_button;
}
}
This way you can prevent having to test in the cart later, after they login, if they already got it and remove it from the cart or make the customer remove it before checking out ...