3 - 4 weeks before is plenty of time, so you are not nearly late yet. I might be a little concerned about the lack of venue, since invitations ought to go out by the end of next week. Still, there is enough time, since there's nothing wrong with waiting until the last minute, as long as you know when the last minute is.
As far as gift-shopping goes, I wouldn't worry. Close friends who want to shop the holiday sales will do so regardless of their receipt of the invitation. If they love you enough to trouble with bargain-hunting, they love you enough to remember your gift regardless.