Корень проблемы в том, что когда вы нажимаете на флажок, событие click распространяется вверх по DOM к родительским элементам.
Таким образом, флажок обрабатывает событие click, переключаясь сам, а затем DIV получает событие click и снова переключает флажок.
Самое простое решение - остановить распространение события, добавив его к элементу ввода:
onClick="event.stopPropagation();"
Хотя это определено в модели событий W3C DOM уровня 2, она может поддерживаться не во всех браузерах, поэтому вы можете использовать кросс-браузерную библиотеку, такую как Prototype или jQuery, для обеспечения совместимости.