I've attempted building an OS from ground up in assembly. one of the best things you can do is start reading other peoples OS code. (see OS dev wiki)
first you'll need a lot of planning, but dont go to ambitious if your starting from scratch. steps like; printing to the screen, getting a user input ect ect, simple things can take months to implement. so start small and make sure your working on something and not just working to make the OS look cool.
You'll need to have an in depth knowledge of low level languages like C and Assembly. Although much of Linux's UI and other functions are writtain in higher level languages (C++ ect ) , the base of any OS is normally writtain in C or assembly because those are pretty much the only languages which dont rely on API functions and standard libarys. an OS in C++ is certainly possible (see BrokenThorn link) but C is much more suited for the job (C was designed for OS programming) so defiantly start there.
a great places to have a gander through are:
BrokenThorn Entertainment
^ with the BrokenThorn tutorials its very easy to
feel like you've writtin an OS when really you've just modified the example code
still great tutorials though
and here:
Expanded Main Page - OSDev Wiki
^ here you'll find all the info you'll ever need for writing an OS you'll also find tutorials on writing different bits and bobs in C and assembler (bootloaders from scratch, Printf() routines ect ect). the guys at OS dev wiki forums will help you out, but they wont write code for you.
I personally found that starting from scratch was better than starting with Linux, it felt more my own, a product of my own mind not a modified version of someone else idea.But see what suits you guys
Good luck on your journey!
Also, theres a PM on its way to you from me