Absolutely, you can learn some ARM assembly, write a program in it, and name it "kernel.img" to have the GPU's bootloader run it. Now that I think of it, if the bootloader handles all the dirty work, you should be able to program C for it just fine.
I plan to write a small bootloader to load multiple kernels and filesystems on it, and I haven't seen anything so far that would stop me.
edit: If you want to program without an OS, some info from here could help even if you're not writing an OS:
Keep in mind everything there is for x86 processors, not ARM, but the general theory there may help.