Если кроссбраузерность не требуется, то можно посмотреть в сторону масок: www.w3.org/TR/css-masking/#the-mask-image - кладем изображение в виде фона, затемняем его, к координатам мышки привязываем блок с фоном и маской. Для хрома приблизительно вот так: jsfiddle.net/JkuR9/3