At Mr. Wizard's urging, I'll post my reasoning for why this is not enabled by default (and should never be, for Mathematica):
Mathematica does not have more than 1 undo, period. This is perhaps the single most requested feature since version 1.0. Even that single undo is not well defined — one might expect (from familiarity with any other software out there), that a CtrlZ would undo the last input character/word, but no, Mathematica treats it (approximately) as "Undo everything that was changed in this cell since the last evaluation and last recorded cursor position". This could be anything from 1 character to 10 lines of code. And the best part — there is no redo!
More importantly, from a design PoV, enabling auto save by default removes the ability to choose the "point of save" from the user and places it in the software's hands, which can often be disastrous. For example, imagine if you were playing an FPS and the game "decided" to auto save just as you got fragged, instead of at that sweet spot you would've chosen, next to all the health and armor...
Combined with the lack of any ability to undo changes, this effectively means that anything you type in Mathematica would be "permanent". While more and more applications (such as Apple's and MS' office suites, Adobe's Creative Suite, etc) are indeed moving towards the "don't worry about saving" approach (since your data is often stored on the cloud, thus necessitating a save or at least, a "soft save"), note that almost all of them support multiple levels of undo.
To avoid running into such problems, you might want to get into a few (good) habits:
Remember to save your work often. Today it was your friend, but tomorrow it could've been an unexpected power outage and no battery/backup power. You never know when and how you could lose your hard work.
Make it a point to place your notebooks under version control if you think it will be useful for more than one day. Although I don't normally recommend placing notebooks under version control, as long as you're using it as a "poor man's backup", it should be fine.
Try placing your code in packages (which are plain text files) and use a decent text editor to make your changes. This does take a bit of getting used to, but will be helpful in the long run. I personally use vim to do all my editing work, and it gives me an entire undo tree! In other words, I can go back in history and follow a different path of development and cherry pick changes from a previous branch, etc. Combined with a ridiculously large history limit, I can almost always go back to the first day's edit (not that I need to).
Just to illustrate, here's a few lines from the vim undo tree for one of my files. In theory, I could go back in time 4 weeks ago and redo a change from one of those undos
Most decent editors have similar features, and so unless you need the interactive features of the notebook or the front end, I'd urge you to avoid using it if you can afford to.