Transaction won't ROLLBACK

I've recently moved from an Access Database to an MSSQL 6.5 Database and
have got all but one feature of my code working with the new database.
What is failing is that although I tell the current transaction to
ROLLBACK, all changes made are saved.  This was happening in both places
where I use transactions but has for some reason stopped occurring at
one place without any modification to the code.  I simply stepped
through the code to see what was going wrong a few times and then it
started to work  However this approach didn't work on the other
transaction (I don't see why it even worked on the first).  Is there
something in MSSQL that has to be set up or some more commands other the
StartTransaction and Commit and Rollback that need to be used?

Simon