on the access vs SQL question (assuming you're doing it yourself)...
The biggest thing I can suggest is make sure you use the n-Tier layout.
The most important part of this is you want an object to handle the communication between your database(s) and your client application. We'll call that DatabaseHandler for this post.
The reason this is important is because you expose methods in your DatabaseHandler class to your Client app to pass you information, and then DatabaseHandler determines which database to read/write from. It's sole purpose is receive input from the client, determine which database it should talk to, pass it on to that database, and vice versa.
Then the last thing you need is a class for each Database, ie one for XML, one for SQL, etc, and you'll want to set up read/write functions with the same signature. Leave it up to that class to determine how to communicate with it's actual database, but what I'm saying is have XML.setInfo(key: String, value: String) and SQL.setInfo(key: String, value: String)
You see where I'm going with that? What that allows you to do is integrate or remove any database at any time, assuming you keep the database's signature the same, without affecting your client application.
It does take a little more design the first time, but what you end up with is something you can drop in to just about any database project from this point forward.
SUMMARY:
Code:
Client/GUI <--> Database Handler <-- Databases (SQL, Access, XML, etc)
Now, on to the SQL. SQL isn't too hard to set up. Ideally you want to run it from your server, or set up a dedicated machine, like an old paperweight desktop. Wipe it out and put the bare minimum on it. You'll gain a lot of stability, scalability, speed, etc from doing that.
edit: Again, that's ideally. You could run it from anyone's machine; I actually have mine on our test bench right now...(gasp!)... prolly shouldn't have admitted that
How many people do you expect to be using it?
FYI I'm fairly certain GnuCash lets you have multiple people use it at the same time... but again, I'd really spend a day or two checking it and/or other open source solutions out, because they've done all the work for you.