I haven't been confronted with this yet, but this is what i think (very superficial and simplistic imho)
If you have a key value kind of storage and all you accesses are key lookups use the NOSQL solutions. If you want lookups based on values (and subvalues) or have something more complicated like joins you would go for a relational solution. Transactions = relational (am not too sure if nosql solutions support that notion yet) It also looks like NOSQL = denormalized (SQL) (i may be terribly mistaken here)
In general, any principles/guidelines/thumb rules to decide chosing the data model for your application.