JavaScript n'y est pour rien, c'est le navigateur qui va d'abord vérifier dans le cache si l'image a déjà été téléchargée. Or pour lui, seul le nom sert de référence. Un moyen pour forcer la mise à jour (en dehors de donner des noms différents, qui serait plus cohérent) serait de "modifier" l'URL en lui ajoutant un paramètre GET unique (souvent un timestamp) qui permet de dire au navigateur que l'image dépend de ce paramètre et donc de l'actualiser :
document.getElementById('tonElement').style.backgroundImage = 'url(BG.png?tt='+new Date().getTime()+')';
Partager