Simply use an indicating boolean.
fiddle
$(document).ready(function (){
$('#menu span:first').hover(function (){
$('#menu').data('pulsating',true);
function pulse(){
if(!$('#menu').data('pulsating')) return;
$('#menu span:first span').eq(0).delay(100).animate({opacity: '1'},400);
$('#menu span:first span').eq(1).delay(200).animate({opacity: '1'},400);
$('#menu span:first span').eq(2).delay(300).animate({opacity: '1'},400);
$('#menu span:first span').eq(3).delay(400).animate({opacity: '1'},400);
$('#menu span:first span').eq(4).delay(500).animate({opacity: '1'},400);
$('#menu span:first span').eq(5).delay(600).animate({opacity: '1'},400);
$('#menu span:first span').eq(6).delay(700).animate({opacity: '1'},400);
$('#menu span:first span').eq(0).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(1).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(2).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(3).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(4).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(5).animate({opacity: '0.3'},400);
$('#menu span:first span').eq(6).animate({opacity: '0.3'},400,pulse);
}
pulse();
}, function(){
$('#menu span:first').animate({opacity: '0.5'}, 400);
$('#menu').data('pulsating',false);
});
});