In a large saute pan over low heat, add oil and butter. When butter is melted, add onions and saute stirring occasionally until golden brown and caramelized, about 35 minutes. Add shallots and some salt and saute for 15 minutes more until onions and shallots are dark brown. Remove from heat and let cool for 5 to 6 minutes, then chop into 1/4-inch pieces. Set aside to cool to room temperature.
Meanwhile, in a medium bowl, combine sour cream, mayonnaise, celery salt, Worcestershire, salt and pepper. Fold in onion mixture. Chill at least 1 hour or overnight, prior to serving.
Dip can be pureed until creamy. If too thick, add milk to get desired consistency.