For it to be a money-saving proposition, you'll need to get your peanuts on sale. Kroger periodically has 12-oz. cans for a dollar. We stock up, then. Sam's Club has giant cans of peanuts for a reasonable price, too, but they're salty. It's important to get either lightly salted, or to balance regular-salted with unsalted, or your peanut butter will be too salty. Don't used dry roasted. Spanish peanuts or cocktail peanuts are what you want.
We have a Cuisinart 11-cup food processor, and I grind about 32 oz. of peanuts at a time. That's enough to fill two 18-oz peanut butter jars, less a little because I generally have some left over already in one of the jars. Three 12-oz. cans of peanuts works out nicely to 36 oz. of peanut butter.
So here's what you do:
Put half the peanuts in the bowl of the food processor (fitted with metal blade). Give it about 10 1-to-2-second pulses, so that the nuts are getting chopped up pretty well. Then let it run for a few seconds until you start to see some clumping. Open it up and take out about half of the contents. They will be the "crunchy" part of your peanut butter. Put the rest of the nuts in the processor. Turn it on. Let it run for several minutes.
It will go through several different phases, from loudly chopping the nuts to seeming to just whir through a semisolid mass without affecting it, to gradually turning it into a smooth, semiliquid mass. When it's glossy-smooth, stop processing, put in your reserved nuts, and run for a couple more seconds to get them stirred in. Done. Scoop it into jars and store in the fridge. It will not separate as long as you keep it in the fridge.
Absolutely optional: I grind up 1/4 c of flax seeds in a coffee grinder and add that to my peanut butter.