It's very possible this has already been done, but I've found a nice easy way to have a secure tree farm. My base is mostly underground with tunnels that lead up to the surface in an enclosed area. I built a rectangle with 3m high walls and cleared the outside perimeter 2m away from the wall to the same floor level as the inside of the farm. Next, inside the walls, clear 1 level off the top and put down whatever stone you like and make a grid of squares like this:
X D X
X T X
where the white-space is whatever block you like, D is a block of dirt, T is a torch and X is some contrasting block to the main floor, but that's mostly cosmetic.
I found by looking at trees in the open that the canopy will grow to 5x5 if other trees are a certain distance away. So if you put 2m of blocks around the dirt, the above diagram gives me a 7x7 block with the tree on the dirt and the torch providing light, the contrasting block gives you a walkway. Plant your saplings, then wait and harvest the trees. Rinse and repeat. So far, the trees don't grow together, but no big deal if they do. I currently burn my leaves until Notch fixes the leaf decay bug, but after it's fixed let them decay and then just get your new saplings. I've been running this farm for a few weeks and so far, no creepers have breached the wall. The same technique works just as well for wheat/reeds/livestock. Here's my tree farm.