I never give them money directly. If I give money, it is to a local charity that caters to helping the homeless.
Edit:
I remember one cab driver I had going from Midway Airport to my apartment. He started talking about homeless people that hold signs like "will work for food." He mentioned how he used to drive one of those food trucks that would sell sandwiches and stuff at construction sites and stuff. At the end of the day, the truck would need to be cleaned out and restocked for the next day. People used to walk up to him with the "will work for food" line. He gave his terms - help clean the truck and he'll give them food. Only once did someone ever help him clean the truck - and he fed him well - 2 sandwiches, a snack or two, water, and some cash to boot for about an hour's worth of work.
I personally see the same guy selling these newspapers that are supposed to help homeless people outside one restaurant for the last 3 years.
I do feel bad for people that are genuinely down on their luck, but it's hard to tell who is and who isn't faking, so I just ignore them and stick to giving to charity directly.