Here's an article about a Provider Model Design Pattern. Interesting reading, but I like my implementation better! ;)
I use pluggable providers at quite a few points in my application. For the Client-Server gateway, for the ClientApplication, for the ServerApplication, and as usual for the DAL. There's a few other areas too. I guess not surprisingly I use the config file to specify the type used at runtime, just like everyone else.