The wikipedia article seems to have some good links at the end.
I'd probably first try the easy approach of recursion and proportional division. At first level of the tree, divide the target area vertically (each area here is a branch, area size depends on branch size):
+-------+-------+-------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-------+-------+-------+
At second level, divide horizontally:
+-------+-------+-------+
| | | |
+-------+ | |
| +-------+ |
| | | |
| | +-------+
| | | |
+-------+-------+-------+
At third level divide vertically again:
+--+----+----+--+----+--+
| | | | | | |
+--+-+--+ | | | |
| | +-+--+--+ | |
| | | | | | |
| | | | +---++--+
| | | | | | |
+----+--+-+-----+---+---+
Etc.