Puoi usare la funzione imagecolorat()
Ti passi i pixel dell'immagine uno per uno, appena ne trovi uno per cui R, G e B non sono uguali, allora l'immagine e' a colori; se arrivi in fondo senza trovarne, l'immagine e' in bianco e nero (sempre che tu per bianco e nero intenda anche scala di grigi).
E' il primo sistema che mi e' venuto in mente, magari ce n'e' un altro molto piu' semplice![]()