When using the future perfect tense ('would have finished') with a time reference, 'by' is the correct preposition. 'By then' means 'by that time' - indicating completion before or at that specific future moment. 'Until then,' 'to then,' and 'at then' are not correct with the future perfect construction.