Yo estoy programando uno para arquitectura x86 y la verdad no es tan difícil como lo hacen ver, claro que yo solo se programar en bajo nivel y tampoco me interesa programar para un so especifico, y estoy aprendiendo C a la par que aprendo como funciona un computador.
Simplemente debes aprender una arquitectura especifica, dedicarte totalmente a un lenguaje de programación y tener las ganas.
Prueba buscando códigos, modificandolos y luego creando tus propias rutinas y funciones, y de a poco entenderas como funciona un sistema operativo y como es el lenguaje de programacion. Por cierto, los que mas te valen son C y ASM. Este ultimo es indispensable, debido a que te permite tratar directamente con el hardware y crear rutinas y funciones del mas bajo nivel posible con el minimo codigo posible.
Creo que tus aspiraciones son muy altas, y debemos ser realistas o sino perderemos facilmente las esperanzas y terminaras por desilucionarte.
Puedes echarle un vistazo a mi so, que ya va en la version 0.02 rev2 y trabajo arduamente para la version 0.03. Es lo mas basico de lo basico pero cumple con mis espectativas. Puedes descargarlo de aca:
http://sourceforge.net/projects/nuos/files/v0.02/nuos0.02rev2-src-iso.tar.gz/download.
Página de mi proyecto en SourceForge.net
https://sourceforge.net/projects/nuos/Como Arming dijo:
http://wiki.osdev.org/Main_Page http://luxur.com.ar/Ademas debes leer el libro "Sistemas Operativos: Diseño e Implementación" de Andrew S. Tanenbaum y aprender a full.
PD: Casi se me olvidaba
http://geezer.osdevbrasil.net/