No, it is not normal to be unpaid for the kind of work your describe, though sometimes students will work on research projects for credit rather than pay (which, in fact, they may pay for), and sometimes students may opt to volunteer to work on research for free. However, there are both legal and ethical guidelines for when this volunteer work is okay. Generally, if the person is taking a place of a paid employee while going unpaid, it's not ethical (and often not legal). However, sometimes a student takes more work to supervise than the value that they provide. For example, if all of their tasks have to be done under the observation of someone who could otherwise be doing those same tasks instead of supervising, it may be justifiable that the position is unpaid. That does not sound like it describes your circumstances.
"Benefits" includes both the tangible ones associated with employment and some less-tangible ones. The tangible ones depend a lot on the country you work in. Less-tangible benefits should indeed include building relationships that allow you to get recommendations for future positions, and importantly learning: about the field, about research, etc.
If you're not being paid, you don't really have to do anything but stop working. It would be polite to let someone know, of course. You may also have legal recourse, but you'd really want to speak to a lawyer to know your position.
I'm not sure how best to handle the costs you've already sunk into this position... you have no guarantee of the recommendation you seek, and your time is being abused in the meantime. It doesn't seem that they have a reasonable valuation of your efforts, so I would not trust them for a good recommendation. It may be time to cut losses and find someone else to work for that respects you.