<p>For example, I issued an ALTER TABLE statement to create an index on a MEDIUMTEXT field in an InnoDB table that has 134k rows where the size of the index was 255 bytes and the average size of the data in the field is 30k.  This command has been running for the last 15 minutes or so (and is the only thing running on the database).  Is there any way for me to determine if it is going to finish in closer to 5 minutes, 5 hours, or 5 days?</p>

This is a pretty common request apparently - requested as far back as 2005 on
bugs.mysql.com
. 
It exists in Oracle already, and is listed as useful, but
"it is not a simple thing to do, so don't expect it to be
implemented soon."
. Although that was 2005 :)
That said, the chap who asked the original question later released a
patch
for MySQL 5.0, backported to 4.1, which might help you out.