Con questo codice, se in Grid.Children trova un oggetto diverso da un Canvas tenta comunque di convertirlo a Canvas, causando quell'eccezione. Prova con questo codice:

codice:
foreach (Object canvas in Grid.Children) { 
  if (TypeOf(canvas) Is Canvas)
    foreach (Object chechbox in (Canvas)canvas.Children) { 
        if (TypeOf(chechbox) Is Chechbox && (Chechbox)chechbox.IsChecked == true) { 
            checkbox_selected = (Chechbox)chechbox.Name; 
        }
     } // foreach (Object chechbox in (Canvas)canvas.Children)
   } // if (TypeOf(canvas) Is Canvas)
 } // foreach (Object canvas in Grid.Children)