the log file is divided into multiple logical log files. If any of these logical files have uncommitted or pending transactions in them, they cannot be shrunk. One of the ways to shrink the log file is :
(1) Stop & restart SQL server service - this will force checkpiont on database which may then clean log of dead transactions.
(2) Write a script to do a lot of inserts & deletes into a temporary table in the database - this will cause the log file to fill up so you can then truncate the inactive portion of the log.
(3) Put database into SIMPLE recovery mode ( if SQL 2000 ) or check Truncate on Checkpoint under options if SQL 7. This will force truncate of log file so it wont grow very much at all. Then flick back into FULL backup mode.