I'm sure there is a way to shrink it. Currently the kernels take up more room than anything else (combined, essentially)
Here are the largest things in the Full Update amd64 image for 2.1 on 9.x:
$ tar tvzf pfSense-Full-Update-2.1-DEVELOPMENT-amd64-20120121-1456.tgz | sort +4 -rn | more
-rw-r--r-- 0 root wheel 11225044 Jan 21 08:58 ./kernels/kernel_wrap_Dev.gz
-rw-r--r-- 0 root wheel 11087189 Jan 21 08:58 ./kernels/kernel_Dev.gz
-rw-r--r-- 0 root wheel 10976697 Jan 21 08:58 ./kernels/kernel_SMP.gz
-rw-r--r-- 0 root wheel 10976695 Jan 21 08:58 ./kernels/kernel_uniprocessor.gz
-r-xr-xr-x 0 root wheel 10152659 Jan 21 04:25 ./boot/kernel/kernel.gz
-rw-r--r-- 0 root wheel 8624207 Jan 21 08:58 ./kernels/kernel_wrap.gz
-r-xr-xr-x 0 root wheel 6223104 Jan 21 08:57 ./usr/libexec/cc1
-r--r--r-- 0 root wheel 3794596 Jan 21 08:56 ./usr/lib/libc_pic.a
-r--r--r-- 0 root wheel 3288542 Jan 21 08:57 ./usr/lib/libcrypto.a
-r--r--r-- 0 root wheel 3248914 Jan 21 08:56 ./usr/lib/libc.a
-r-xr-xr-x 0 root wheel 2964432 Jan 21 08:59 ./usr/local/bin/php
-r--r--r-- 0 root wheel 2866812 Jan 21 08:57 ./usr/lib32/libc_pic.a
-r--r--r-- 0 root wheel 2188798 Jan 21 08:57 ./usr/lib32/libcrypto.a
-r--r--r-- 0 root wheel 2180154 Jan 21 08:57 ./usr/lib32/libc.a
-r-xr-xr-x 0 root wheel 1952543 Jan 21 08:59 ./usr/local/lib/php/20090626/mbstring.so
-r-xr-xr-x 0 root wheel 1930032 Jan 21 08:58 ./boot/kernel/zfs.ko
-r-xr-xr-x 0 root wheel 1849824 Jan 21 08:59 ./usr/local/sbin/dhcpd
-r--r--r-- 0 root wheel 1751200 Jan 21 08:57 ./usr/share/misc/magic.mgc
-r-xr-xr-x 0 root wheel 1739616 Jan 21 08:59 ./usr/bin/dig
-r-xr-xr-x 0 root wheel 1729088 Jan 21 08:59 ./usr/bin/nslookup
-r-xr-xr-x 0 root wheel 1728784 Jan 21 08:59 ./usr/bin/host
-rwxr-xr-x 0 root wheel 1717360 Jan 21 08:59 ./lib/libcrypto.so.6
-r-xr-xr-x 0 root wheel 1698280 Jan 21 08:59 ./usr/bin/nsupdate
-rwxr-xr-x 0 root wheel 1514872 Jan 21 08:59 ./usr/local/lib/libxml2.so.5
-r-xr-xr-x 0 root wheel 1455184 Jan 21 08:59 ./usr/local/sbin/dhcrelay
-r--r--r-- 0 root wheel 1435640 Jan 21 08:57 ./usr/lib32/libcrypto.so.6
-r--r--r-- 0 root wheel 1343488 Jan 21 08:57 ./usr/share/misc/termcap.db
-rwxr-xr-x 1 root wheel 1315160 Jan 21 08:59 ./lib/libc.so.7
-r-xr-xr-x 0 root wheel 1284920 Jan 21 08:59 ./usr/local/bin/links
-r-xr-xr-x 0 root wheel 1276200 Jan 21 08:57 ./usr/bin/ld
-r-xr-xr-x 0 root wheel 1172096 Jan 21 08:57 ./usr/bin/as
-r--r--r-- 1 root wheel 1096236 Jan 21 08:57 ./usr/lib32/libc.so.7
-rwxr-xr-x 0 root wheel 1077061 Jan 21 08:59 ./usr/local/lib/libiconv.so.3
-rwxr-xr-x 0 root wheel 1039640 Jan 21 08:59 ./usr/lib/libstdc++.so.6
-r-xr-xr-x 0 root wheel 1011008 Jan 21 08:57 ./usr/bin/objdump
(That is every object >1MB)
About half the size of the entire image is kernels.