We take a cross-layer approach to medium access control (MAC) design in ad hoc networks. Specifically, building on the IEEE 802.11 standards, we propose an opportunistic multi-channel MAC protocol. The proposed MAC protocol utilizes multiple channels in a unified manner, and has a flavor of "resource pooling". Furthermore, by exploiting the channel variations across these multiple channels, the proposed opportunistic multi-channel MAC protocol can achieve selection diversity. Another key component in the proposed MAC protocol is that the size of the contention window is adjusted adaptively based on the number of competing stations which is estimated using the sequential Monte Carlo technique. Throughput results reveal that even under heavy traffic conditions, the proposed scheme can still achieve significant multi-channel diversity gain. Finally, we use simulation results to validate the efficiency of the sequential Monte Carlo method for the adaption of the contention window.