Вы рассматриваете только 7 бит, а не 8. Эта инструкция:
for (int i = 0; i < 7; i++)
Должно быть:
for (int i = 0; i < 8; i++)
В любом случае, вот как я бы это реализовал:
byte[] bytes = ...
List<bool> bools = bytes.SelectMany(GetBitsStartingFromLSB).ToList();
...
static IEnumerable<bool> GetBitsStartingFromLSB(byte b)
{
for(int i = 0; i < 8; i++)
{
yield return (b % 2 == 0) ? false : true;
b = (byte)(b >> 1);
}
}