условие - размеры переданы в пикселях. в объекте указывается
дельта (x-x0).
function lol(el, deltaObj/*{x:"+2",y:"-5"}*/){
var pos = document.body.style.backgroundPosition||getComputedStyle(el,null).backgroundPosition;
if(pos.match(/^(\d+)px\s(\d+)px$/))
pos = { "x" : +RegExp.$1, "y" : +RegExp.$2 };
else
pos = { "x" : 0, "y" : 0 };
el.style.backgroundPosition = pos.x + +(deltaObj.x||0) +"px "+(pos.y+ +(deltaObj.y||0))+"px";
}
<script>
function lol(b, c) { var a = document.body.style.backgroundPosition || getComputedStyle(b, null).backgroundPosition, a = a.match(/^(\d+)px\s(\d+)px$/) ? {x:+RegExp.$1, y:+RegExp.$2} : {x:0, y:0}; b.style.backgroundPosition = a.x + +(c.x || 0) + "px " + (a.y + +(c.y || 0)) + "px" }
</script>
<div style="background:url(http://javascript.ru/forum/images/ca_serenity/misc/logo.gif) 84px 0px;width:76px; height:76px;" onclick="lol(this, {x:10, y:5});"></div>