If you specify a relative URL in CSS background-image property, then it becomes relative to the request URL of the currently requested resource containing the JS code. So, if you declared it in a JS file, then it's relative to the request URL of the JS file itself. Or, if you declared it in a JSF page, then it's relative to the request URL of the JSF file itself. It's not relative to the physical location in the server side disk file system path as most starters incorrectly assume.
Thus, that relative URL is in your case clearly wrong. In a JSF web application, among others the JSF resource handler's URL prefix /javax.faces.resource or even the faces servlet mapping like /faces/* are most probable causes that the relative URL resolves wrongly. You need to look at the request URL and extract the proper relative URL from it.
Or, if that JS code is located inside a <script> or <h:outputScript> of a JSF page, then you can also use the implicit #{resource} mapping in EL to convert a resource identifier to a fullworthy resource URL:
E.g.
<h:outputScript>
$('.ui-datagrid-column').live('mousemove',function(){
$(this).css('background-image', '#{resource['images/vert_degrade.PNG']}');
});
</h:outputScript>
Much better is to create a CSS declaration in a standalone CSS file which is loaded by <h:outputStylesheet> as it supports evaluating EL expressions inside CSS files.
.vert-degrade {
background-image: url('#{resource['images/vert_degrade.PNG']}');
}
with
$('.ui-datagrid-column').live('mousemove',function(){
$(this).addClass('vert-degrade');
});
so that the JS code can be kept in its own JS file.