It very much depends on your budget but, at this time of year, I would suggest you book in advance as there's nothing worse than wasting time trudging around a crowded city looking for accomodation in peak season.
Actually, there is something worse - booking into the first available place because your feet are aching and you're fed up with lugging stuff around only to discover later that a much nicer place (usually at a more favourable rate) is just yards away.
I second the American Hotel which is in a great location on the Leidesplein (ice-skating in winter) and has the most wonderful bar, but overall I prefer to stay on the Singel which is home to the flower market and some excellent Indonesian restaurants - the Estherea Hotel is my favourite and the Singel Hotel comes a close second.
The Agora is a recommended 2* hotel on the Singel but, depending how long you plan to stay, why not rent a houseboat? I can personally recommend B033 and B050 on this site, but there are also guestrooms and apartments to choose from:
www.google.co.uk/url?sa=t&source=web&cd=1&ved=0CFgQFjAA&url=http%3A%2F%2Fwww.houseboathotel.nl%2F&rct=j&q=hotel%20on%20canal%20amsterdam&ei=IdQuTqvGDJKAhQf41YU3&usg=AFQjCNEzxexFtEZ0UT-yn9LUG_AeCnNUfw&cad=rja