Setting up recurring payment schemes is a different problem, IMHO, and one that deserves to be dealt with separately.
Specifying recurring payments in the URI would be easy for simple payments like "once a month", but would be somewhat awkward in more advanced schemes. Specifying something like "4 BTC per day for the first 7 days, then 100 BTC every 30 days after that until canceled" in a variable=value fashion would be awkward at best, and it would be trickier to implement and harder to read for both humans and machines.
I would propose that recurring payments are dealt with separately, by putting together a payment scripting language. Consider this python-esque pseudocode:
function main(addr):
for i in range(0,7): pay(addr,4)
while isvalid(self):
for i in range(0,30):
if i == 0:
pay(addr,100)
I'm not proposing that one will need to learn how to program to write a payment scheme. The actual scripting language could look something more like this:
pay 4 to [address] once every 1 day for 7 days
pay 100 to [address] once every 30 days
The above code snippet would be easy to read for humans and machines alike. My point is that URIs are good for defining variables, not for defining functions; payment schemes are functions. I suggest that recurring payments should be kept out of the URI specification altogether.