Yes, you'll get better security - adding layers always helps, especially if you then take steps to protect each one. For example, if you only allow access to the web service and allow access to the sql server from your web server only, then you've reduced the target area hackers could use to get at your sql server.
Of course, now you're in the position where they need to hack your web server to be able to get at the sql server. If you further reduce the area by putting the web service code into a service and only allowing that to access your sql server then you're doing a lot better - the web service code acts solely as a wrapper to the middle-tier service; now they need to hack the web server which will only let them get access to the service, and that will contain your proprietary interfaces that should be more difficult to hack (assuming the hackers are attacking your web and sql servers using known security flaws, eg 0 day attacks).
I know several places that are paranoid on security (financials mainly) here the web server is considered a security risk, so very little is run in there - it acts as part of the presentation tier solely to pass data through to a secured service, that in turn manages a secure connection to the data tier.
See Roger Session's article on Software Fortresses for an introduction.
As for speed.. well, nowadays servers are so fast you can take an object, convert it to SOAP, post it over HTTP, parse it, unpack it back to an object and call the method you wanted all along without too much noticeable delay. Of course it's slower, but if you can scale it so it is fast enough, then who cares nowadays?