This can be done, but alot of it is going to depend on your build scripts. If you tell cc.net to monitor the top level svn folder so for example have you project monitor:
http://myserver.com/svn/project rather than http://myserver.com/svn/project/trunk. If any changes are seen in http://myserver.com/svn/project it will kick off a build.
Now, it is up to your build script to determine what source is out of date or if there is a new branch to build. The build script would create a new VDir for any new branches.
Another option would be to have a cc.net project that was designed to do nothing other than add new projects to your cc.net. (Call it BranchBuilder project) I would leverage the pre-processor in cc.net and have a top level .config file that just included the project for trunk and each branch. The branch builder project would monitory the root path on svn. If it saw any changes it would look to see if there were any new branches since the last build. If there was one, it could create a ccnet-branchname.config file for that branch, create the vdir and then update the ccnet.config root file with an additional include.
After the ccnet config has been update cc.net will recognize the config file has been modified and reload the config adding your new branch project. That branch project would start running and build your new branch.