Con el typecast le estas diciendo que el componente es un TCheckbox y así que es normal que proteste si no lo es. Unos objetos de un tipo no se convierten en otros de otro tipo por arte de magia. Por eso antes es mejor siempre comprobar de que tipo de objeto se trata antes de intentar usarlo.
Por ejemplo:
Código Delphi
[-]
if Panel1.Controls[i] is TPanel then
with Panel1.Controls[i] as TPanel do