じゃあ俺はこれで

Func<Control, bool?>[] filter = {
  c => (c is TextBox) ? true : default(bool?),
  c => ((c is ListBox || c is UserControl) && c.Tag is string) ? true : default(bool?),
  c => (c is Label && !c.Text.EndsWith(":") && (((Label)c).Image == null)) ? true : default(bool?),
};

var q = from Control c in Controls
     let qq = from f in filter
          select f(c) into r
          where r != null
          select (bool)r
     where qq.FirstOrDefault()
     select c.Name;

listBox1.Items.AddRange(q.ToArray());