Мне кажется лучше использовать картинки вместо background-image, а эффект лучше делать с translate3d ccs3, тогда эффект будет плавнее и красивее.
Чтобы функция bgApproximation() выполнялась по кругу, как вариант можно использовать функцию
setInterval().
Переключение между слайдами с приведённым кодом сделать будет проблематично. Лучше делать отдельный блок, в котором все слайды с картинками и дальше манипулировать ими.
<div class="slides">
<div class="slide"><img src="" alt="" /></div>
<div class="slide active"><img src="" alt="" /></div>
<div class="slide"><img src="" alt="" /></div>
</div>
Вот пример простого слайдера, без лишних наворотов:
https://github.com/toymakerlabs/kenburns