Have you looked at Subversion Branches at all?
One common technique is to keep your Trunk stable, applying critical fixes as required. You then create a branch for each new significant piece of work. Developers working on that project check out the branch and commit to the branch. It does not affect the Trunk until you decide to merge the branch back to the main trunk as part of your final integration.
Another approach is to have a branch for a particular Release, to avoid any other work accidentally being done on the trunk causing issues. You can bug-fix the 'Release Branch' as required and then fold those fixes back to the trunk when ready.
Your developers can have multiple working copies checked out - the trunk and any branches - or can swap between the trunk and a particular branch with the svn switch command.
I do not recommend having lots of 'sandbox' working copies that you keep separately checkout as (a) this prohibits collaboration with others and (b) it will be too easy to accidentally commit not-working-yet changes to the main trunk.