Recompiling your kernel is a rite of passage, as well as a doorway to much goodness. and on top of that, the guys at Berkeley made a pretty easy system of it too.
I'd say you should go ahead and get up to the stable release while you're doing all this, but you could just use sysinstall to get your distribution source. But that won't help you with the nvidia drivers. So I'll tell you what you need to know to get updated to 4.7-stable.
With FreeBSD, you'll need to grab a source tree. You can get the 4.7-STABLE source most easily by using cvsup. There are example supfiles for use with cvsup under /usr/share/examples/cvsup/ . Just look at the stable-supfile, and of course read the handbook. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html will tell you all about synchronizing your source.
The most hair-raising part of the upgrade process is running mergemaster. YOU MUST PAY ATTENTION TO WHAT IS HAPPENING. You've also got to know what files are special for you in /etc. For instance - letting mergemaster overwrite your current /etc/master.passwd will kill your added user accounts and reset your root password. That sucks. But if you're upgrading from 4.4-RELEASE, the /etc/master.passwd file does need to be updated with certain daemon user entries. You'll have to merge these sorts of files interactively to include all the right lines. It's a little wierd at first, but becomes natural after a while.
And if you backup your etc directory, you're in good shape if you screw up. Also, if your custom kernel doesn't work, don't freak out! You can stop the FreeBSD bootstrapper and tell it to load an old kernel. In / you'll see a few different kernels, most likely, like kernel, kernel.old, kernel.GENERIC, and possibly more. If your kernel freaks out, just type load kernel.old at the boot loader, and voila, you're using the last kernel that was installed. If you always keep a generic kernel in the root directory, you'll have a good kernel you can always fall back on.
h a l b e r _ m e n s c h