I have an application that is currently running in VB & there is a project running to convert them to C#. This application will create databases in SQL Server 2000 & 2005 while the database name is passed as a parameter by the end user.

The users are complaining that database & objects (database, table, constraints, indexes created from a single script) in them are taking about 40 minutes to complete which I think is a huge amount of time. Is there a way to tune them or have a model of database shipped with the installation & use them as a template to copy/attach those databases?

Usually each database would grow upto 4GB to 8 GB in size but initially would be created with no data.

If you have created database's script from SSMS you could have enclosed starting file size i.e. 8GB. It takes time for SQL Server to allocate big data file on physical storage. I know that creation of 4-8GB does not take 40 minutes but it could be additional factor which slows down whole process.