Thanks vkaryl, that helped me find the problem. The problem was, apparently, that the setup did not create the entry for gmt_offset in the wp_options table, and the administration tool doesn't create it if it is missing.
So the solution, for others who may have the same problem as me, such as piR, is that you have to insert a new record manually on the database server. We use a php mysql admin package to do it so it was pretty straightforward. The fields should go something like:
option_id: whatever the highest item in your table is, +1 (must be unique)
blog_id: same as all the other records in the table, probably 0 unless you have more than one blog running in this database
option_can_overwrite: Y
option_type: 1
option_value: (your offset here, but whatever number you put here you can then successfully change it later in the administration)
option_width: 20
option_height: 8
description: (blank)
admin_level: 1
autoload: Y
Entering a new record with the above information fixed my blog.