Используйте встроенный Convert.ToByte()
и читайте кусками по 8 символов, не изобретая заново вещь.
Если только это не научит вас побитовым операциям.
Обновление:
Воровство у Адама (и, возможно, чрезмерное использование LINQ. Это может быть слишком кратким, и нормальный цикл может быть лучше, в зависимости от ваших собственных (и ваших коллег!) Предпочтений):
public static byte[] GetBytes(string bitString) {
return Enumerable.Range(0, bitString.Length/8).
Select(pos => Convert.ToByte(
bitString.Substring(pos*8, 8),
2)
).ToArray();
}