I use this technique at work. Like anything, you may or may not do things the same way depending on your particular needs. Pure Client/Server isn't inheritantly bad, for instance, though you may believe it if you talk to some people.
Anyway, we (my company) develop "components" that are hosted on a website and exposed through web services. What this means is there's a website (.NET of course) that has compiled DLLs for the components and some ASPX/ASMX pages that are basically pass-throughs to the compiled code. The webservices return XML almost exclusively. In some instances, they return or accept DataSets. The web services provide a small layer of abstraction where we can do some authentication and cacheing of often-used lookup tables. The components don't have to be hosted in the same website as the web services - heck, they don't even have to be in a web project at all.
There is a separate website that handles some admin functions and reports. They're mostly ASP pages converted to .NET to help Admins who don't always work at the same machine and want/need a light interface into the system.
That handles the "middle" and "data" tiers, more or less. The front end is Windows Forms. We built our own dynamic loading mechanism that downloads DLLs as needed. All forms, toolbars, and toolbar "snap-ins" (our own design) reside in DLLs. The main "app" is an MDI form and a bunch of common routines for window handling and such. Even the log-in form and authentication process is handled through a DLL that is downloaded as needed.
The whole thing works rather nicely and our clients have loved it so far! The best part is the distibution/setup. The main install wizard only needs the main EXE (and the .NET framework, of course). Everything else is downloaded on demand. This is a bit different than the auto-download you may have heard of when you run an EXE from the Web. Ours uses a standard EXE setup program that creates a folder and copies our main EXE. We decided we needed a little more than what the auto-download features gave us.
Anyway, to answer your original question about using data access tiers via web services, the answer is a resounding yes!
You could just as easily substitute in a Web Form in front of the webservices layer. We chose Windows forms because of the rich controls (tabbed dialogs, grids, etc.). I've done both Web and Windows apps - windows for about 5 years, web for about 3.5 and they both have their advantages/disadvantages. Not that you asked, but since I was typing a lot anyway...
-nerseus