In lst1, set it's RowSource to a query that contains all of the BookNames (make sure to include the Primary Key but you don't have to display it).
Then in lst2, set it's RowSource to a query that is based on what is selected in lst1. Something like: "Select AuthorName From Authors Where BookID = Forms!MainForm!lst1" Assuming that the bound column in lst1 is the BookID.
Then you need to add some code to lst1's click or double click event to requery lst2.
And (perhaps a similar answer with different words and an example) you can download a sample database at www.Bullschmidt.com/Access and open it up and notice that on the Invoices Dialog the Customer combo box on the search form is based on what was entered in the Rep combo box above it.
This is done by the RowSource property of the Customer combo box's SQL statement. Also the OnEnter property of the Customer combo box runs a function which requeries itself: