Distribute and Edit Objects along Polygon
Dupliverts should do exactly what you want.

I could spend ages explaining it here, but the manual does it better :)

You'll need to turn orientation on to get things facing in different directions.

Edit: But do follow the link in Mr Zak's comment, it contains many further examples and an entire alternative method.  Not sure why it wasn't an answer too.