Improve my little syntactic hack
Comments on Design
I like the idea in general but usually when I introduce a lock in a scope, the scope is usually the whole method so it does not look that ugly:
void MyClass::myMethod()
{
    lock_guard lock(sync);    // sync is an accessible mutex object
    do_protected_stuff();     // may throw, but the mutex is released regardless
}

But lets assume that you have situations that make your style worth while in using:
Now my problem is that you have situations where things are not as they seem:
with_lock_guard (sync)
    runit = boost::thread(get_it_yourself);
    cout &lt;&lt; &quot;Starting... &quot;;
    boost::this_thread::sleep(boost::posix_time::millisec(500));
    cout &lt;&lt; &quot;OK!  Z = &quot; &lt;&lt; zz &lt;&lt; endl;

Only the first statement is inside the lock. Yet I get no compiler error (yes I know silly error but the idea is that you should design your class so that it is really hard to abuse even accidentally):
I would change the design slightly so that it used a lambda:
with_lock_guard(sync, []()
{
    runit = boost::thread(get_it_yourself);
    cout &lt;&lt; &quot;Starting... &quot;;
    boost::this_thread::sleep(boost::posix_time::millisec(500));
    cout &lt;&lt; &quot;OK!  Z = &quot; &lt;&lt; zz &lt;&lt; endl;
});

This way it will be harder to abuse accidentally.
Comments on code:
If you are going to have operator bool() conversion method then at least make it explicit so it can not accidentally be abused. But since you are calling this from your own macro I would have a method that you explicitly call. This makes the code easier to understand.
https://stackoverflow.com/questions/6242768/is-the-safe-bool-idiom-obsolete-in-c11
// Prefer to use explicit on bool to prevent accidental usage:
explict operator bool() { bool ret = new_lock; new_lock = false; return ret; }

But I would do this:
#define with_lock_guard(SYNC)   for (with_lock_ lk_(SYNC); lk_.MakeSureWeRunOnceOnly(); )