After 911, INS pass 2.7 million name to FBI for name check. The purpose is to check whehther you are on the government watch list or many other potential controlled name lists kept by government.
Usually it take 1-3 months, but some or many cases are "luck" enough to be picked out for more detailed analyst in-person check, which may take up to 1-2 years.
So if your I-485 has been pending for a long long time, you should inquiry FBI to find out whther your case stuck by name check. USCIS won't procee your case untill they receive name check results from FBI.
Good luck to all, including myself :-))