I haven't played with the built-in Newsletters module much, so not sure how it works in terms of being able to set a frequency at which to send. I would imagine that you would create several newsletter feeds based on the Frequency - ie. Daily, Weekly and Monthly Newsletters (3 separate newsletters). You could then clone the Newsletter subscription part and modify it to sign the user up to a newsletter based on their frequency.
Alternatively you could use a Scheduled Task to add/remove users from the Newsletter based on their frequency - just need to be careful of those who have opted-out.