Translators seem about equally divided on this question, with older translations such as KJV, Geneva, Darby and even RSV using the present tense and newer ones leaning toward the future tense. My Greek is not good enough to help me understand the answer. I would appreciate expert opinions, as well as interpretations based on the context.
Personally, I have always thought, based on reading traditional translations, that Zacchaeus was telling Jesus what he already did, in order to defend himself from unjust accusations. But the response of Jesus that "today salvation has come to this house," might imply that his blessing was due Zacchaeus' commitment to future giving rather than current practice.
Finally, reading the parable that follows the story of Zacchaeus recently led me to the opinion that Jesus [or Luke] was making an analogy between Zacchaeus (the chief tax collector of the district) and the lord in the parable. This lord was misjudged by one of his servants as corrupt and severe, when in fact he was extremely generous. Luke's decision (unlike Matthew's) to place the parable immediately after the Zacchaeus incident tends toward seeing Zacchaeus as already generous, rather than promising generosity in the future.
So: did Zacchaeus actually say "I [already" give]" or "I will give."