In a large skillet, cook bacon over medium heat until crisp. Remove with a slotted spoon to paper towels. Saute onions and celery in the drippings until tender; drain.
Place potatoes in a Dutch oven and cover with water. Bring to a boil. Reduce heat; cover and cook for 20 minutes or until tender. Drain; set potatoes aside. In the same pan, melt butter. Stir in flour until smooth; gradually stir in milk. Bring to a boil over medium heat; cook and stir for 2 minutes or until thickened.
Reduce heat; add onion mixture, potatoes, carrots, salt and pepper. Cook for 10 minutes or until heated through. Sprinkle with bacon.