I think we have to realistic and compassionate, so long as people are deserving of that compassion. We shouldn't write people off just because they make a mistake, so long as they are willing to make the effort to put things right. The problem with many poor people is that they have had an entitlement mentality bred into them, and they're not willing to get themselves over the hump.
The problem, in my view, can only be solved by completely ending government involvement in welfare. Once the government starts spending even a little on welfare, people tend to become accustomed to receiving handouts, rather than trying to earn their own money. Furthermore, welfare programs are quite burdensome for the economy. It is much better to leave the whole problem to private charities.