What are some best practices for using schemas in SQL Server?
We use them


to separate permissions per client (eg we have desktop, WebGUI etc schemas)
for logical grouping eg (Data and Staging schemas for our tables).


Useful and practical observations past the white paper mentioned by Marian:


GRANT on the schema: no more permissions per object. So a new proc in the WebGUI schema automatically has the permissions of the schema
Nice groupings in SSMS Object Explorer
OBJECT_SCHEMA_NAME
You are forced to qualify object names (which is best practice)