Warmup
Before you even think about attempting it, make sure you know the make and specifications of your hardware and peripherals. Writing a comprehensive list of all your hardware isn't a bad idea at all. Once your satisfied you've got the skinny on your system, it's time to backup... especially if you've had a few too many beers and are doing this on impulse *sheepish grin*. It's also essential you have development tools already in place:

Roll Up Your Sleeves
If you have rpm kernel-source and headers, go ahead and install them. With tar.gzfiles, unpack them into /usr/src/linux-kernel version and make a symlink from /usr/src/linux to the actual kernel source tree /usr/src/linux-kernel version. In /usr/src/linux,
you can either apply a patch - using the commandzcat /patch_location/ patchname.gz | patch -p0 -e
Type make mrproper which cleans up the kernel source tree. To initiate the kernel configuring stage proper, type make xconfig, make menuconfig or the text-based make config. I heartily recommend make xconfig. This stage is where you design/optimize the kernel for your particular system and computing needs. With each kernel feature, you will be presented with a y for "yes-i need this feature", n for no-"i don't need this feature or my system doesn't support this feature" and sometimes an m for modular. It's generally recommended one makes a kernel as modular as possible. This way, instead of having the software for a device always in memory, the module in question is loaded only when the device's services are requested.

Kernel Configuring Tips:

If you have an AMD processor, select the Pentium or Pentium Pro option.

If you have a system greater than a 386, select no to math emulation.

Networking support
If you want to connect with SLIP, PPP, term, and so on to dial up for internet access, you need to say yes. Even if your system isn't connected to a real network, the X window system and other packages need networking support.

ISO9660 - Which entails most CD-ROMs. If you want to use your cdrom with Linux, it's a good idea to say yes and compile it with the kernel.

Double Check Your Configuration
Finished configuring your kernel? Fire up your favorite text editor and view the .config file in your current directory. The .config file was created when you executed the make xconfigcommand and documents your selections among other more esoteric settings. If you see something you dont want, reconfigure the kernel as described or edit the file if you know your stuff. Now, still from the /usr/src/linux directory run make dep; make clean from the command line prompt which as you guessed, runs make dep and make clean consecutively. Keep an eye out for errors. If you hear sirens or see smoke coming out of your box, things aren't copeseptic.

Compile the Kernel
Time to compile the kernel source. Type make bzImage and relax. Depending on the size of the kernel and brawn of your particular system, you may have enough time to watch the footballdouble header or do a load of laundry. Once this is complete and there are no errors, cd over to /usr/src/linux/arch/i386/boot and and confirm there is the kernel executable file called bzImage is there. Copy bzImage to the /boot directory.

Let LILO in on it
It's important that we now alter LILO to reflect the changes we made. Open lilo.conf found in the /etc directory and create a new section for the newly configured kernel. We won't abandon the old kernel because we may need to use it in case our new kernel panics. The easiest way is to mimic the original entry, and change the name of the image to /boot/bzImage and the label of the old kernel image to something reasonable like linux.save or whatever.
Here's what lilo.conf should look like:

Now, at bootup, press the TAB button and you will be presented with a choice. But please, do NOT bootup yet! The kernel you just compiled and the old kernel, which is linux.save in this instance. Once you've made these changes to lilo.conf, exit the vim and type /sbin/lilo -v to seal the deal.

Make Your Modules
It's time to create the module executables and install them. Mosey on down to /lib/modules street and mv the old kernel module versions to a name that's easily identifiable-say 2.2.14.save. After your done that, enter make modules; make modules_install at the prompt, and visit your new modules in /lib/modules/kernel version number. Type /sbin/depmod -a which in essence instructs the kernel to load the modules in a set order.

Gut Check Time!
Time to reboot your system. If there are any failures during the boot up process, you'll need to fine tune the kernel further. The text might whirl by fast, so us the Pause/Break button to slow the text so you can jot the error down. If you get an outright kernel panic, reboot and at the LILO prompt and select the old kernel. See, it was a good idea to save the old image!

During the 2.4 series of the Linux Kernel, this option was expanded to contain options to enable debugging on some areas of the kernel. Debugging high memory, memory allocations, and memory mapped I/O, which are of no use in production systems, along with debugging spinlocks and verbose reporting of BUG() options compliment the venerable SysRQ key, which has probably saved countless filesystems from lengthy fscks after a panic.