I have a list or lib which has columns "due date" and "percentage". My requirement is to send email alerts every day from "due date(should wait till due date)" until the "percentage" gets 100. Once it is 100 my workflow to be stopped sending email alerts.
To elaborate on Steve Lineberry's answer, you can create an infinite loop by using two lists and a workflow on each.
First we have your list with the due date and percentage. You add another column that is basically a dummy field which we will use to trigger a change, and thus your list's workflow. This workflow will first check if the list item is completed or not, and if not, check if the current date is greater than the due date. If it is send an email, if not don't. Regardless of the current date, if the item is not completed, you create an item in the secondary list using this list item's ID.
Then the secondary list's workflow fires (on creation) and using the first list item's ID, changes the dummy column (maybe to the current date so that its always unique). This will trigger the first workflow and start the loop again.
All that said, it would be much cleaner to write a custom coded workflow, and if that is an option I would definitely recommend it.
The key here is the pause action. I've done this before sending an email out 3 days before a task is due. I'm usure if you can create a loop so things could get a little messy since you have a undetermined number of times to send the email.
I think that you must create your own workflow using Visual Studio or you can create Custom Action (button) that you will be run every day.
As @Zork has mentioned to do thsi with workflow you need to jump through a few hoops or you can use somethink like Nick Grattans "While" custom action.