Шутка про армию и флот (принято считать автором Макса Вайнрайха) - это не ирония, а почти точное научное описание.
С лингвистической точки зрения строгого критерия нет. Взаимопонятность не работает: носители разных диалектов немецкого (баварский и северонемецкий) понимают друг друга хуже, чем датчане и норвежцы, но это диалекты одного языка. Письменность не работает: сербский и хорватский используют разные алфавиты, но по многим формальным критериям это один язык.
То, что работает - это понятие языкового континуума плюс политическое и социальное признание. Китайские "диалекты" (кантонский, миньнань, у) лингвистически являются разными языками - они не взаимопонятны, у них разная фонология и грамматика. Их называют диалектами исключительно по политическим причинам: единое китайское государство с единым мандаринским как государственным языком. Это идеологическое, а не научное решение.
Скандинавский случай обратный: Норвегия, Дания, Швеция - отдельные государства с отдельными армиями, поэтому их взаимопонятные языки получили статус отдельных языков. Тот же норвежский внутри себя имеет две официальных письменных нормы (букмол и нюношк), что вообще уникальная ситуация.
В академической лингвистике для таких случаев используют термин "pluricentric language" или работают с понятием диасистемы. Но на практике граница всегда политическая.
Отличный ответ. Можно добавить, что болгарский и македонский - похожая политическая история: одни называют македонский самостоятельным языком, другие диалектом болгарского, и это до сих пор источник реального политического конфликта.
Про нюношк интересно - это же буквально язык, созданный в 19 веке на базе диалектов, в противовес датизированному букмолу. Живой пример того, как язык конструируется политически.