I buy concrete "paving stones" from Home Depot. $1 to $1.25 last time I checked, less on sale.
The two sizes I use are:
12" x 12" x 1" (sturdy) and
8" x 16" x 3/4" (cheap if used the long way ($1 per 16"), tall if used upright ($1 per 8"))
So I can make beds with walls 8" high, 12" high (my usual) or 16" high (where a raised bed wall butts up against a below-grade trench/walkway). I've been thinking about how to get taller walls, like one row of bricks or cinder blocks under the pavers, but I have not been that ambitious yet.
If you only have annual plants in such beds, you can change the size and shape of a bad faster than you can move furniture around your living room!
P.S. All these beds can look a lot tidier if I wiggle the pavers into upright alignment, and I COULD mortar them into place. But then I couldn't widen a bed if a neighbor closed her eyes for five minutes!
P.P.S
Here's a link to more photos showing how to create drainage (and how NOT to create drainage!). I went crazy when dave supported multiple-photo-downloads:
http://garden.org/thread/view_...