There is a tool that comes with the arduino distribution, buried off in a bin directory, called avr-nm.
avr-nm will show you the sizes of the functions in an object file - either the functions that end up in the final .elf binary (actual size used by your program), or the individual intermediate .o files. The .o file/function sizes are a little misleading because many functions are likely to be omitted by the linker when they are discovered to be "not used"; but the numbers should give you a rough estimate of which libraries are "large." Overall impact can also be skewed if some library has other dependencies that are bigger than you expect (the usual culprit is math: "huh. Why does I2C initialization use floating point? That's stupid", but it can be annoying to track down.)
You need to start by locating the directory containing your binaries. Here's some sample output from a Mac, analyzing the deceptively simple "webclient" example:
(oops. It turns out that you CAN'T analyze the individual .o files when you're compiling with the "-flto" link time optimization switch that Arduino is using these days!)
WWHackintosh<10012> [color=green]cd /var/folders/gv/zn3wcml52jq0vvjnd95j8g6h0000gp/T/arduino_build_811964/[/color]
WWHackintosh<10015> [color=teal]avr-nm -SC --size-sort *.elf[/color]
[color=orange] (bunch of small stuff omitted for brevity)[/color]
000005fc 0000002a T Print::write(char const*)
000016b6 0000002a T DhcpClass::printByte(char*, unsigned char) [clone .constprop.32]
00000364 0000002c T EthernetUDP::write(unsigned char)
00001ad4 0000002c T EthernetClient::write(unsigned char)
00002ecc 0000002e T __divmodsi4
00000424 00000030 t W5100Class::readSnRX_RSR(unsigned char)
0000083e 00000030 T W5100Class::readSnTX_FSR(unsigned char)
000009de 00000032 T EthernetUDP::peek()
00001c88 00000034 T EthernetUDP::EthernetUDP()
00001c88 00000034 T EthernetUDP::EthernetUDP()
00001c42 00000034 T EthernetClient::read()
0000093a 00000036 T W5100Class::write(unsigned int, unsigned char)
00002578 00000038 T W5100Class::getTXFreeSize(unsigned char) [clone .constprop.62]
00000e68 0000003c T socketStatus(unsigned char)
00001e7c 0000003c T W5100Class::readSn(unsigned char, unsigned int)
00000b6a 0000003e T EthernetUDP::read(unsigned char*, unsigned int)
00000ea4 0000003e t pinMode.constprop.44
000001f0 00000042 t HardwareSerial::_tx_udr_empty_irq()
00000cae 00000044 T close(unsigned char)
000002c0 00000044 T HardwareSerial::flush()
00002f30 00000044 T __udivmodsi4
00001bf4 00000046 T EthernetClient::peek()
00001b52 00000048 T EthernetClient::connected()
00000318 0000004a t micros
00000666 0000004c T __vector_19
00000ba8 00000052 T EthernetUDP::read()
0000010e 00000054 T Print::write(unsigned char const*, unsigned int)
00001b9a 0000005a T EthernetUDP::begin(unsigned int)
00000a10 0000005e T recvAvailable(unsigned char)
000008dc 0000005e T W5100Class::write(unsigned int, unsigned char const*, unsigned int)
00800268 0000005e b EthernetClass::begin(unsigned char*, unsigned long, unsigned long)::s_dhcp
0000087c 00000060 T W5100Class::read(unsigned int, unsigned char*, unsigned int)
000006b2 00000064 T __vector_18
00000970 0000006e T peek(unsigned char, unsigned char*)
00000716 00000074 T delay
00000572 0000008a T EthernetUDP::write(unsigned char const*, unsigned int)
000004e6 0000008c T EthernetUDP::beginPacket(IPAddress, unsigned int)
000025b0 0000008e T W5100Class::read_data(unsigned char, unsigned int, unsigned char volatile*, unsigned int) [clone .constprop.60]
00000232 0000008e T HardwareSerial::write(unsigned char)
00000454 00000092 T EthernetUDP::endPacket()
000023f2 00000092 T Print::printNumber(unsigned long, unsigned char) [clone .constprop.3]
00000390 00000094 T IPAddress::printTo(Print&) const
000007a2 00000094 T __vector_16
00000cf2 00000096 T socket(unsigned char, unsigned char, unsigned int, unsigned char) [clone .part.1] [clone .lto_priv.93]
00002d88 00000096 T random_r
00001f02 00000098 T EthernetClient::stop()
00002e1e 0000009c T random
008002de 0000009d B Serial
00000bfa 000000b4 T EthernetUDP::parsePacket()
000024ae 000000ca T W5100Class::send_data_processing_offset(unsigned char, unsigned int, unsigned char const*, unsigned int) [clone .constprop.63]
00001d92 000000d6 t EthernetUDP::beginPacket(char const*, unsigned int)
00001cbc 000000d6 T EthernetClient::connect(char const*, unsigned int)
00000d88 000000e0 T EthernetUDP::beginMulticast(IPAddress, unsigned int)
00000a6e 000000fc T recv(unsigned char, unsigned char*, int)
00002c78 00000110 t global constructors keyed to 65535_0_WebClient.ino.cpp.o.3063
00001f9a 00000114 T EthernetClient::write(unsigned char const*, unsigned int)
000020ae 00000130 T EthernetClient::connect(IPAddress, unsigned int)
00001570 00000146 T EthernetClass::begin(unsigned char*, IPAddress) [clone .constprop.38]
000013da 00000196 T W5100Class::init() [clone .constprop.42]
000021de 00000210 t DhcpClass::send_DHCP_MESSAGE(unsigned char, unsigned int) [clone .constprop.31]
000016e0 0000038a T DhcpClass::parseDHCPResponse(unsigned long, unsigned long&) [clone .constprop.33]
00000ee2 000004f8 T DNSClient::getHostByName(char const*, IPAddress&) [clone .constprop.52]
0000263e 0000063a T main