IIUC, I think you can do it like this:
dfg = df.groupby(['AccountID', 'Last Name', df.groupby(['AccountID', 'Last Name']).cumcount() + 1]).first().unstack()
dfg.columns = [f'{i}{j}' for i, j in dfg.columns]
df_out = dfg.sort_index(axis=1, key=lambda x: x.str[-1])
df_out.reset_index()
Output:
AccountID Last Name Contract1 First Name1 Address1 City1 State1 Contract2 First Name2 Address2 City2 State2 Contract3 First Name3 Address3 City3 State3
0 1234 Pitt 622.0 Brad 466 7th Ave Park Slope NY 28974.0 Brad 1901 Vine Street Philadelphia PA NaN NaN NaN NaN NaN
1 2345 Rhodes 622.0 Dusty 1 Public Library Plaze Stamford CT 28974.0 Dusty 1001 Kings Highway Cherry Hill NJ 54122.0 Dusty 444 Amsterdamn Ave Upper West Side NY
2 4321 Ford 54122.0 Henry 93 Booth Dr Nutley NJ NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN