The issue is that Chrome (and other browsers) will cancel any pending image requests when a request for loading a new page in the current window is made. You've probably been lucky that the first _trackEvent request is getting recorded because of the extra processing going on during the second _trackEvent.
When adding a delay to a link, you need to make sure to keep the link's default action from executing -- otherwise the default action follows the link before the setTimeout function can occur.
The following code checks to see if the link is opening in a new window -- if not, it delays following the link by 150ms:
function track(link) {
_gaq.push(['_trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);
_gaq.push(['rollup._trackEvent', 'Basket Remove', product_name, product_code, product_price, false]);
if ('_blank' == link.target) return true;
var url = link.href;
setTimeout(function(){ document.location = url; }, 150);
return false;
}
<a href="someURL" onclick="return track(this);">ClickMe</a>