You have your database design worked out but testing reveals performance problems - what hardware do you upgrade first?
No one answer for this - it depends on where the bottleneck is.
Before you start spending money on hardware, make sure your database design is solid and you know where the bottlenecks are.
Some key points are (in no particular order):
* Turn off flushing after each write (NOTE - see WAL docs once available)
* Check sharred-memory settings. [http://mainbox/sysdocs/pgsql7.1/kernel-resources.htm||[adm]]
* Check max no. of clients (and up shared-mem accordingly)
* Amount of RAM / speed of disks (enough RAM for whole DB if poss :-)
* Processor speed and number (only one process per query though, so only useful for multiple clients)
* Use replication if you feel it suits your needs (see the contrib/ directory of the source distribution)
Again - make sure you understand what the problem is before leaping into upgrades.