It is easy to set a time frame within which the funds are not distributed, and the donator can reclaim them back. I think that in this specific case, it boils down to whether the developer of the smart contract knows what they are doing, and acting in good faith. Fortunately, the opensource nature of smart contract allows anyone to double check the quality of a contract.
On the other hand, you have a strong point. Not everyone has the time, motivation, and knowledge to check whether a contract has the correct functionalities. The platforms and tools acting as intermediates are rare, not mature enough, and often straight scammy for now.