Why wouldn't that be possible ?
You could create a custom product field to set for each product if it can be insured or not and then have such code:
$bases = 0;
$already = false;
foreach($this->rows as $i => $row){
if($row->product_code =='insurance') $already = true;
if(empty($row->cart_product_quantity) || empty($row->product_insured)) continue;
$price = $row->price_value_with_tax*$row->cart_product_quantity;
$bases += (int)$price/100;
if( $price%100) $bases++;
}
if(!$already){
$app =& JFactory::getApplication();
$app->redirect(hikashop::completeLink('product&task=updatecart&product_id=XX&quantity='.$bases.'&add=0&return='.urlencode(base64_encode(hikashop::currentUrl()))));
}
Then, you will want to change a bit the code to remove the link to the insurance product and hide the quantity of the insurance and update the insurance quantity if the number of products, etc changes...