This is a quick and easy to understand how-to on compiling a kernel. If I can compile a kernel, anyone can. Trust me I am not the brightest bulb on the tree. Take your time and and double check things.
1) We need to download the new kernel. The easiest way is to use wget if you are using the command line. We are assuming that you are logged as user root in root's home directory.

wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.gz

2) Unpack the kernel to the appropriate spot.

cd /usr/src
tar xvfz /root/linux-2.6.12.tar.gz

3) Edit lilo, if you are using grub you'll need to figure this out yourself.

vim /etc/lilo.conf

Add this you your /etc/lilo.conf file under your exsisting Linux section. This will save you old kernel so you can boot to it if you have problems.

image = /boot/vmlinuz.old
root = /dev/hda1 (change hda1 to whatever your Linux partition is)
label = slack.old
read-only

4) Change the link /usr/src/linux to the new kernels directory.

ln /usr/src/linux-2.6.12 /usr/src/linux

5) Edit your Makefile

cd /usr/src/linux
vim Makefile

Find the line that says #export INSTALL_PATH=/boot and uncomment it (remove the # sign).
6) Now is the fun part, we get to compile the kernel. Do these steps in order and you should have no problem. It does take a while to compile the kernel, so be patient.

make menuconfig
make dep
make clean
make bzImage
make
make install
make modules
make modules_install

7) The last step is to reboot and cross your fingers. If you have problems, boot to the old kernel and redo theses steps. It has always worked for me. The biggest problem I find is missing a module that you need. Like say, you are running a Reiser file system and you do not choose that module. When you reboot the file system will not load. Just take your time and choose the right things and you'll be alright. One thing to remember is, DO NOT do this at 3am. The lack of sleep will mess you up.