Leyendo este post seguro que te enteras mejor de lo que yo te lo pueda explicar:
http://foro.elhacker.net/index.php/topic,100482.0.htmlAdemas use parte de un codigo que ponen en la revista arroba para hacer esto mismo, asi que si puedes leer el numero 101 y 102 el artículo de esteganografia estupendo.
Aqui una pequeña explicación:
Lo primero es conocer el formato bmp. Para un BMP de 24 bits se usan 24 bits

para representar un pixel, ejemplo de un pixel:
FF FF FF
Este seria un pixel de color blanco. Lo que en binario seria:
1111 1111 1111 1111 1111 1111
En el programa que he puesto modifico el bit menos significativo de los colores de un pixel u sea el ultimo bit de esa fila de arriba.
Asi en 8 pixels se podria guardar 8 bits que es lo que ocupa un caracter.
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1111
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1111
Quedate con los ultimos bits de cada pixel:
01000001 -> la letra A.
Modificar ese ultimo bit supone modificar muy ligeramente el color del pixel, inapreciable para mis ojos al menos

.
Fijate en una cosa: asi como lo tengo es un poco absurdo, cada par de bytes representa un color Red, Green y Blue
FF FF FF
Y yo solo modifico el color azul xD. Asi que seria mejor modificar los 3, a ver si mañana hago esa pequeeña mejora.
En delphi es mas sencillo hacerlo porque proporciona la clase TBitmap perfecta para manejar bmp, ir fila por fila en la imagen cambiando cada pixel, ect...
Si te vas a poner ha hacerlo te recomiendo que primero cojas un bmp pequeeño y con el editor hexadecimal vallas entendiendo como se modifica.
Saludos.