[HTC Sensation] dragongc:
I've been having this exact same issue and tracked it down to sycn-ing contacts with Facebook and Twitter. Uninstalling these two apps let my contacts app work again.

Still occurs with alpha 8

Device: HTC Sensation 4G (TMOUS)

ROM: CM7 Alpha 8

KERNEL: CM7 Alpha 8

I / ActivityManager ( 288): Starting: Intent { act=android.intent.action.VIEW dat=content://com.android.contacts/contacts/lookup/649i77a9f83f0b571830.1086i2061264/2974 cmp=com.android.contacts/.ViewContactActivity (has extras) } from pid 1671
D / ContactHeaderWidget ( 1671): onQueryComplete: discard result, the query handler is reset!
D / dalvikvm ( 288): GC_EXPLICIT freed 493K, 45% free 6489K/11719K, external 2060K/2572K, paused 83ms
I / ActivityManager ( 288): Displayed com.android.contacts/.ViewContactActivity: +306ms
W / Sources ( 1671): Unknown type=com.google, mime=vnd.com.google.cursor.item/contact_misc
W / Sources ( 1671): Unknown type=com.google, mime=vnd.android.cursor.item/group_membership
D / AndroidRuntime ( 1671): Shutting down VM
W / dalvikvm ( 1671): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E / AndroidRuntime ( 1671): FATAL EXCEPTION: main
E / AndroidRuntime ( 1671): java.lang.IllegalStateException: Top level element must be ContactsSource
E / AndroidRuntime ( 1671):	at com.android.contacts.model.ExternalSource.inflate(ExternalSource.java:133)
E / AndroidRuntime ( 1671):	at com.android.contacts.model.ExternalSource.inflate(ExternalSource.java:104)
E / AndroidRuntime ( 1671):	at com.android.contacts.model.ContactsSource.ensureInflated(ContactsSource.java:99)
E / AndroidRuntime ( 1671):	at com.android.contacts.model.Sources.getInflatedSource(Sources.java:323)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity.buildEntries(ViewContactActivity.java:953)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity.bindData(ViewContactActivity.java:532)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity.considerBindData(ViewContactActivity.java:525)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity.access$400(ViewContactActivity.java:107)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity$2.onPostExecute(ViewContactActivity.java:386)
E / AndroidRuntime ( 1671):	at com.android.contacts.ViewContactActivity$2.onPostExecute(ViewContactActivity.java:355)
E / AndroidRuntime ( 1671):	at android.os.AsyncTask.finish(AsyncTask.java:417)
E / AndroidRuntime ( 1671):	at android.os.AsyncTask.access$300(AsyncTask.java:127)
E / AndroidRuntime ( 1671):	at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
E / AndroidRuntime ( 1671):	at android.os.Handler.dispatchMessage(Handler.java:99)
E / AndroidRuntime ( 1671):	at android.os.Looper.loop(Looper.java:130)
E / AndroidRuntime ( 1671):	at android.app.ActivityThread.main(ActivityThread.java:3835)
E / AndroidRuntime ( 1671):	at java.lang.reflect.Method.invokeNative(Native Method)
E / AndroidRuntime ( 1671):	at java.lang.reflect.Method.invoke(Method.java:507)
E / AndroidRuntime ( 1671):	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
E / AndroidRuntime ( 1671):	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
E / AndroidRuntime ( 1671):	at dalvik.system.NativeStart.main(Native Method)
W / ActivityManager ( 288): Force finishing activity com.android.contacts/.ViewContactActivity
W / ActivityManager ( 288): Activity pause timeout for HistoryRecord{40817e28 com.android.contacts/.ViewContactActivity}
I / Process ( 1671): Sending signal. PID: 1671 SIG: 9
I / Process ( 288): Sending signal. PID: 1012 SIG: 9
I / ActivityManager ( 288): Process android.process.acore (pid 1671) has died.

Otherwise, great work and thanks!