First of all, indexed views are great if you only need straight forward select statements from base tables. If you want to combine data using derived tables, they have some major limitations. The real question is why do you not want your users in the base tables??? If you set your security up properly, they should only have read access anyhow.
If they create long running queries that lock tables and transactions fail, there are a couple other really good ways to go. A snapshot... basically back-up and restore the production database to a different non-production database once a day. Let them use the snapshot.
If they need up-to-the-minute data, then replicate the database. We have several of them and the longest we are behind production is about 10 seconds. With replication, long running queries can cause problems. Plus you want to make sure the security is set for users to only read the tables.
Both of these options give your users all the data, and they are not touching your "production" database.
As for creating something like an Oracle Materialized View. That is just a fancy way of saying we created a table. The MV actually holds the data just like a table. In SQL Server, you can simply create another table from the base table, or get creative and use the programming of a stored procedure to fill a table. It can be dropped and recreated through the SP every day using a DTS job.
If all else fails, download the tables to MS Access for the users.... Ok that was a joke for all you SQL Jocks..
