Потому что вы используете значения из $_SESSION, но кеш вашего компонента (этот же код в компоненте у вас написан?) не учитывает значения из сессии.
И предупреждая ваш следующий вопрос - не надо делать зависимость кеша компонента от значений в сессии, весь смысл кеша пропадёт, он только лишнюю память/место занимать будет.
Из простого:
- либо отключайте кеш на компонете (быстрое, простое и плохое решение)
- либо выставляете этот checked через JS, который вы можете добавить в страницу в некешируемой части компонента (читайте про
component_epilog.php)