Just over three months ago I started a new position where I worked from my home office, for a company in another state.
Now most of you who say "That's an awesome job" having hearing only that, I must correct you. A sucky job would suck DOUBLE if you were home alone doing it. I like my job for some the same reasons someone might like their office job.
The main difference is that the typical office banter has been eliminated from my life. Sometimes this is good, and it allows me to concentrate. Sometimes this is bad, because I just want a conversation with someone who is not my family, about something that isn't work. This is probably for me one of the two 'cons' for working at home. Sometimes its lonely, and sometimes I just want to be away from my family.
The other con is that I could spend a week or more at a time without leaving the house. This would mean reduced exercise, and like I mentioned above, limited human interaction.
The Pros for programming out of your house are almost exactly what you think, except not as big. During my breaks, I can let my dogs out, or I can move laundry from the washer to the drier. I can spend Lunch time with my wife/kids, or even visit my kids school at lunch time for activities that they might be having. The latter are also possible if your office is close to your child's school, so that is not unique to working at home, it just happens to be an advantage I picked up.
Following a good routine that you used to go to work before is a good Idea, and I very much benefit from such a routine.
If you are thinking of programming from your house, I suggest getting 'dressed' for work everyday, and having some sort of daily accountability (we have daily team meetings via phone).