Создаем див и присваиваем ему стили которые хотим, потом через js обращаемся к нему и указываем чтобы он следил за мышкой через абсолютное позиционирование
$(window).on('mousemove', function(e){
$('.cursor').css({
top: e.pageY + 'px',
left: e.pageX + 'px',
})
});
при этом скрываем стандартный курсор через css - cursor:none;
с точки зрения производительности это оправдано или не стоит так делать и лучше использовать то же самое свойство css - cursor:url(cursor.png);