Я не думаю, что есть какой-либо способ гарантировать, что данный файл (или любой набор байтов) обязательно представляет собой изображение, отличное от попытки загрузить и отобразить его.
Однако, если у вас есть какие-то загадочные байты, вы всегда можете проверить наличие определенных сигнатур байтов, чтобы попытаться определить, является ли это правильно сформированный файл изображения. Вы можете посмотреть заголовки файлов в википедии, но вот некоторый код, который я использую в модульном тестировании, чтобы проверить вывод стороннего инструмента отчетности:
// Some signatures:
const string _pdfSignature = "%PDF-";
readonly byte[] _bmpSignature = new byte[2] { 0x42, 0x4D };
readonly byte[] _pngSignature = new byte[8] {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
readonly byte[] _gifSignature = new byte[6] { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61 };
А для JPG:
Assert.That(_theBytes[0] == 0xFF && _theBytes[1] == 0xD8); //Start of jpg file
Assert.That(_theBytes[_theBytes.Length - 2] == 0xFF && _theBytes[_theBytes.Length - 1] == 0xD9); //End of jpg file