First, read this page to get an idea of what it's like to be a kernel developer.
Picking what you want to work on
It's often useful to figure out what subsystem you would like to work in. There are many different subsystems in the kernel, like wireless, USB, the scheduler, filesystems, etc. The best way to get into kernel hacking is to focus on a subsystem that you are already interested in. Once you've found a subsystem, you should join its subsystem mailing list to get a feel for where most of the work is being done.
What if I don't know what I want to work on?
- Browse staging drivers (drivers/staging), check for TODO files. If you are not able to complete tasks in TODO you may be able to do cleanup patches, from within a kernel tree try
scripts/checkpatch.pl -f --terse --show-types --strict path/to/source/file
Be sure that you fully understand the change you are making, checkpatch is a dumb script - you need to verify that the changes are actually needed by understanding the code. Don't be too eager with whitespace patches, while they are a risk free way to get your first patch in they do not add that much value to the kernel and still require reviewer/maintainer time to process.
Help the Kernel janitors project, making easy modifications and cleanups to the Linux kernel source code, together with people who can explain you why those changes are needed. This helps you get familiar with the Linux kernel source code, and at the same time you do something useful for the Linux community.
Find bug reports on the linux-kernel mailing list or the Kernel Bug Tracker and help fix them. In the beginning you may be restricted to helping reproduce the bug and tracking down what is roughly the cause of a bug, but after a while you will become familiar with the source code and will be able to fix bugs yourself.
I just want to dive right in
Great! Go read KernelBuild for descriptions on how to download, compile, and install the latest kernel code. Happy hacking!