I like sharing solutions for a few reasons, many already mentioned by others: they are good study aids before exams, students will catch your mistakes/assumptions, students can see what is considered "ideal", etc.
However, I've noticed (through pageview tracking on course management sites) that few students actually look at them! So, I think it behooves us to do something with solutions. Pick one problem per assignment and discuss solutions in class. This can be the most difficult problem, the one with the most valid approaches, the one that tripped up students the most, the one that provides a segue to the next topic, etc. Or, have a followup assignment where students must pick one problem and write about how their solution differs from yours. Or, offer extra credit for students who notice their solutions are significantly different and who write them up and send to you to be included in future versions.
Your mileage will vary depending on your course's difficulty and size and how much class time you're willing to devote to this. Personally, I've started using activities like this in a 15ish student intro to proofs course, including class discussions of actual student solutions (anonymously) that I type up and distribute. They have really enjoyed this so far.