Even with .AllowObstructions it is still possible to get into conflicts.
E.g. With AllowObstructions a local file that already exists is left in place as a modified version of the new file. But if you add a directory in its place then you get a tree conflict.
(I would really recommend not using .AllowObstructions as that makes it easy to commit a new file over another file without noticing that you accidentally did this)
There are more than a few cases where you can get obstructions or skips, so you should really look at the Notifications (.Notify event on the client or the args object) or the Status after update.
Even checkout to an empty directory (or a not existing location) might cause conflicts... E.g. in cases where there are problems in the svn:externals definitions.