Перебирать довольно просто.
Код:
var
rb : TRadioButton;
begin
rb := Form1.FindComponent('RadioButton'+IntToStr(Nmb)) As TRadioButton;
Вообще, Access Violation обычно означает обращение к не созданному объекту. Вот поэтому я и говорю, что у тебя в коде что-то не так.
Ну и еще один момент. Обновлять состояние компонентов из др потока (отличного от главного потока) надо через Synchronize.