Pay close attention to the caveats in the wiki discussion of llGetAgentSize. The returned value may not be what you expect. I don't think it will make much difference how you calculate it. You can hope that standard- size avatars will need to be offset by almost the same amount, but non-standard shapes may vary quite a bit.
EDIT: I have used a method like Innula's, but it's really a crap shoot. The 1.1 factor is one that I've seen in scripts for a very long time. It seems to be an empirical fudge factor that approximates the difference between the value reported by llGetAgentSize (which does not include the head, for some reason I have forgotten -- the bounding box, maybe?) and the avatar's real height (which does include the head). That's close for standard-sized avatars, but not for everyone.