To share an access database, just place the *.MDB file into a network share and open it across the network. I use this technique for up to around 15 network users, going beyond that or locations with a lot of traffic, I push to SQL Server.
Migration to SQLServer is a very easy task, especially if your using the dbGO components (ADO) as all that will be required is changing the connection string to point to the SQL Server instance. The only issue I had with such a conversion was with boolean fields. In access these fields have an internal representation of 0 or -1, and in SQL Server they have an internal representation of 0 or 1. In Access they resolve as boolean, in SQL Server they do not. For instance the following query fails in SQL Server:
SELECT * FROM TABLE WHERE BOOLFIELD
it has to be rewritten as:
SELECT * FROM TABLE WHERE BOOLFIELD <> 0
All of my other queries work properly...with the exception of date/time, which I suggest passing as parameters and letting the driver handle the translation.
The conversion process is fairly simple. Use the migration tool to migrate your access database to SQL Server, then use the SQL Server script database to generate a script for you. Either give this script to your customers to deploy, do it yourself at each location, or write a program to parse and execute each command as read from the file.
You can migrate data from one database to another via SQLServer using the OpenDataSource method and then performing an insert into from your access database.
INSERT INTO TABLE FROM
OpenDataSource('Microsoft.Jet.OLEDB.4.0','Access.mdb')...TABLE
Another option would be to go n-Tier. If you have the enterprise version of Delphi, then its not to hard to migrate the system over to a true n-Tier solution using TClientDatasets and writing a few server functions. Of course mileage will depend much on the current layout of your application, and how complex the system is.