I don't recommend using anything made of softwood, because they decay rapidly, adding to nutrients and bottom sediment. If you're going to use trees or pallets, it's best to use Oak or other hardwood, because it decays at a much slower rate.
Many people lash oak pallets together and strap cinder blocks on to sink them, which works pretty well, but if you have sediment on the bottom the cribs will sink right down into it. We sell an AquaCrib on our web site that floats from an anchor that holds it off the bottom...this prevents it from sinking into the muck.
Tree branches are ok if you can anchor them to the bottom, and if they are hardwood. I have seen people auger holes in the pond bottom and stand branches/trees upright in them. That's a great way to do it, but the pond almost needs to be empty to do it.
Other people lash tires together and sink them. Boulders piled up make great habitat, but again, it is easier to do with an empty pond, unless you do it right at the ponds edge. We arrange boulders in semi circles at the pond edge to give fathead minnows a spawning sanctuary.
Ultimately, one of the best types of habitat is native aquatic weeds. You can either encourage native weeds (find out the difference between native and invasive exotics...there are lots of sources out there) that are in your pond, or purchase some...we sell them on our web site.
I hope that helps,
Mike Robinson
Keystone Hatcheries