The issue is that the variable is at the scope of the "do", which means it can't be a standard macro, but a change to the language implementation. It can definitely be done though- The question is more as to whether this offers enough conceptual advantage over "let"...
This is essentially the same (or very similar at least) to a system I implemented a while back, which you can read about here: http://arclanguage.org/item?id=7485
I added an additional twist that gives it additional advantages that I argue offset the cost of a new language construct.